From fdae6c72fcf3f8eed225a95c1eb5487a9f021846 Mon Sep 17 00:00:00 2001
From: Lai Power
Date: Thu, 8 Feb 2024 12:31:51 +0000
Subject: [PATCH] modified file `smtp-mailer`
---
.../plugins/activitypub/.distignore | 41 +
.../plugins/activitypub/LICENSE | 22 +
.../plugins/activitypub/activitypub.php | 214 +
.../assets/css/activitypub-admin.css | 199 +
.../plugins/activitypub/assets/img/mp.jpg | Bin 0 -> 3337 bytes
.../activitypub/assets/img/wp-logo.png | Bin 0 -> 11836 bytes
.../assets/js/activitypub-admin.js | 20 +
.../activitypub/build/follow-me/block.json | 47 +
.../build/follow-me/index.asset.php | 1 +
.../activitypub/build/follow-me/index.js | 1 +
.../build/follow-me/style-index.css | 1 +
.../build/follow-me/view.asset.php | 1 +
.../activitypub/build/follow-me/view.js | 1 +
.../activitypub/build/followers/block.json | 57 +
.../build/followers/index.asset.php | 1 +
.../activitypub/build/followers/index.js | 3 +
.../build/followers/style-view.css | 1 +
.../build/followers/view.asset.php | 1 +
.../activitypub/build/followers/view.js | 3 +
.../includes/activity/class-activity.php | 229 +
.../includes/activity/class-actor.php | 139 +
.../includes/activity/class-base-object.php | 678 ++
.../includes/class-activity-dispatcher.php | 125 +
.../includes/class-activitypub.php | 413 +
.../activitypub/includes/class-admin.php | 275 +
.../activitypub/includes/class-blocks.php | 151 +
.../activitypub/includes/class-debug.php | 36 +
.../activitypub/includes/class-handler.php | 33 +
.../activitypub/includes/class-hashtag.php | 119 +
.../includes/class-health-check.php | 377 +
.../activitypub/includes/class-http.php | 131 +
.../activitypub/includes/class-mention.php | 173 +
.../activitypub/includes/class-migration.php | 200 +
.../activitypub/includes/class-scheduler.php | 169 +
.../activitypub/includes/class-shortcodes.php | 584 ++
.../activitypub/includes/class-signature.php | 499 ++
.../activitypub/includes/class-webfinger.php | 208 +
.../includes/collection/class-followers.php | 432 ++
.../collection/class-interactions.php | 235 +
.../includes/collection/class-users.php | 209 +
.../plugins/activitypub/includes/compat.php | 49 +
.../plugins/activitypub/includes/debug.php | 17 +
.../activitypub/includes/functions.php | 700 ++
.../includes/handler/class-create.php | 61 +
.../includes/handler/class-delete.php | 165 +
.../includes/handler/class-follow.php | 81 +
.../includes/handler/class-undo.php | 31 +
.../includes/handler/class-update.php | 89 +
.../plugins/activitypub/includes/help.php | 75 +
.../includes/model/class-application-user.php | 72 +
.../includes/model/class-blog-user.php | 243 +
.../includes/model/class-follower.php | 366 +
.../activitypub/includes/model/class-post.php | 131 +
.../activitypub/includes/model/class-user.php | 300 +
.../includes/peer/class-followers.php | 34 +
.../includes/rest/class-collection.php | 222 +
.../includes/rest/class-followers.php | 149 +
.../includes/rest/class-following.php | 131 +
.../activitypub/includes/rest/class-inbox.php | 367 +
.../includes/rest/class-nodeinfo.php | 176 +
.../includes/rest/class-outbox.php | 152 +
.../includes/rest/class-server.php | 132 +
.../activitypub/includes/rest/class-users.php | 155 +
.../includes/rest/class-webfinger.php | 124 +
.../includes/table/class-followers.php | 176 +
.../includes/transformer/class-post.php | 606 ++
.../integration/class-buddypress.php | 66 +
.../integration/class-nodeinfo.php | 64 +
.../integration/class-webfinger.php | 62 +
.../plugins/activitypub/readme.txt | 529 ++
.../activitypub/templates/admin-header.php | 27 +
.../activitypub/templates/author-json.php | 34 +
.../activitypub/templates/blog-json.php | 34 +
.../templates/blog-user-followers-list.php | 28 +
.../activitypub/templates/post-json.php | 37 +
.../activitypub/templates/settings.php | 272 +
.../templates/user-followers-list.php | 21 +
.../activitypub/templates/user-settings.php | 32 +
.../plugins/activitypub/templates/welcome.php | 162 +
.../plugins/authldap/.phive/phars.xml | 6 +
.../plugins/authldap/LICENSE.md | 7 +
.../plugins/authldap/README.md | 95 +
.../plugins/authldap/SECURITY.md | 18 +
.../plugins/authldap/authLdap.css | 13 +
.../plugins/authldap/authLdap.php | 946 +++
.../plugins/authldap/phpcs.xml | 22 +
.../plugins/authldap/readme.txt | 161 +
.../plugins/authldap/security.txt | 6 +
.../plugins/authldap/src/Exception/Error.php | 24 +
.../authldap/src/Exception/InvalidLdapUri.php | 74 +
.../Exception/MissingValidLdapConnection.php | 23 +
.../src/Exception/SearchUnsuccessfull.php | 24 +
.../plugins/authldap/src/LdapList.php | 93 +
.../plugins/authldap/src/LdapUri.php | 179 +
.../plugins/authldap/src/Manager/Ldap.php | 164 +
.../plugins/authldap/src/UserRoleHandler.php | 54 +
.../plugins/authldap/src/Wrapper/Ldap.php | 92 +
.../authldap/src/Wrapper/LdapFactory.php | 24 +
.../authldap/src/Wrapper/LdapInterface.php | 39 +
.../plugins/authldap/view/admin.phtml | 454 ++
.../companion-auto-update/admin/dashboard.php | 8 +-
.../companion-auto-update/cau_emails.php | 11 +-
.../companion-auto-update/cau_functions.php | 844 +-
.../companion-auto-update.php | 2 +-
.../plugins/companion-auto-update/readme.txt | 11 +-
.../gp-premium/backgrounds/functions/css.php | 134 +
.../backgrounds/functions/functions.php | 1342 ++++
.../functions/secondary-nav-backgrounds.php | 420 +
.../backgrounds/generate-backgrounds.php | 19 +
.../gp-premium/blog/functions/columns.php | 169 +
.../gp-premium/blog/functions/css/columns.css | 149 +
.../blog/functions/css/columns.min.css | 1 +
.../blog/functions/css/featured-images.css | 104 +
.../functions/css/featured-images.min.css | 1 +
.../gp-premium/blog/functions/css/style.css | 254 +
.../blog/functions/css/style.min.css | 1 +
.../gp-premium/blog/functions/customizer.php | 1181 +++
.../gp-premium/blog/functions/defaults.php | 58 +
.../blog/functions/generate-blog.php | 714 ++
.../gp-premium/blog/functions/images.php | 369 +
.../gp-premium/blog/functions/js/controls.js | 98 +
.../blog/functions/js/customizer.js | 76 +
.../functions/js/infinite-scroll.pkgd.min.js | 12 +
.../gp-premium/blog/functions/js/scripts.js | 100 +
.../blog/functions/js/scripts.min.js | 1 +
.../gp-premium/blog/functions/migrate.php | 122 +
.../plugins/gp-premium/blog/generate-blog.php | 20 +
.../gp-premium/colors/functions/functions.php | 1583 ++++
.../colors/functions/js/customizer.js | 620 ++
.../functions/js/menu-plus-customizer.js | 102 +
.../colors/functions/js/wc-customizer.js | 161 +
.../colors/functions/secondary-nav-colors.php | 403 +
.../colors/functions/slideout-nav-colors.php | 400 +
.../colors/functions/woocommerce-colors.php | 911 +++
.../gp-premium/colors/generate-colors.php | 20 +
.../copyright/functions/functions.php | 223 +
.../copyright/functions/js/customizer.js | 18 +
.../copyright/generate-copyright.php | 20 +
.../disable-elements/functions/functions.php | 422 +
.../generate-disable-elements.php | 20 +
.../gp-premium/dist/block-elements.asset.php | 1 +
.../gp-premium/dist/block-elements.css | 6 +
.../plugins/gp-premium/dist/block-elements.js | 3 +
.../gp-premium/dist/customizer.asset.php | 1 +
.../plugins/gp-premium/dist/customizer.js | 1 +
.../gp-premium/dist/dashboard.asset.php | 1 +
.../plugins/gp-premium/dist/dashboard.js | 1 +
.../plugins/gp-premium/dist/editor.asset.php | 1 +
.../plugins/gp-premium/dist/editor.css | 1 +
.../plugins/gp-premium/dist/editor.js | 1 +
.../gp-premium/dist/site-library.asset.php | 1 +
.../plugins/gp-premium/dist/site-library.css | 1 +
.../plugins/gp-premium/dist/site-library.js | 6 +
.../gp-premium/dist/style-dashboard.css | 4 +
.../assets/admin/author-image-placeholder.png | Bin 0 -> 138 bytes
.../admin/background-image-fallback.jpg | Bin 0 -> 45015 bytes
.../elements/assets/admin/balloon.css | 211 +
.../elements/assets/admin/elements.css | 82 +
.../elements/assets/admin/elements.js | 29 +
.../admin/featured-image-placeholder.png | Bin 0 -> 200 bytes
.../elements/assets/admin/metabox.css | 396 +
.../elements/assets/admin/metabox.js | 424 +
.../elements/assets/admin/spinner.gif | Bin 0 -> 4162 bytes
.../gp-premium/elements/assets/js/parallax.js | 17 +
.../elements/assets/js/parallax.min.js | 1 +
.../elements/class-block-elements.php | 1785 +++++
.../gp-premium/elements/class-block.php | 469 ++
.../gp-premium/elements/class-conditions.php | 438 ++
.../elements/class-elements-helper.php | 503 ++
.../gp-premium/elements/class-hero.php | 1037 +++
.../gp-premium/elements/class-hooks.php | 223 +
.../gp-premium/elements/class-layout.php | 550 ++
.../gp-premium/elements/class-metabox.php | 2245 ++++++
.../gp-premium/elements/class-post-type.php | 508 ++
.../plugins/gp-premium/elements/elements.php | 289 +
.../general/class-external-file-css.php | 449 ++
.../gp-premium/general/enqueue-scripts.php | 81 +
.../plugins/gp-premium/general/icons.php | 87 +
.../gp-premium/general/icons/gp-premium.eot | Bin 0 -> 3020 bytes
.../gp-premium/general/icons/gp-premium.svg | 20 +
.../gp-premium/general/icons/gp-premium.ttf | Bin 0 -> 2856 bytes
.../gp-premium/general/icons/gp-premium.woff | Bin 0 -> 2932 bytes
.../gp-premium/general/icons/icons.css | 10 +
.../gp-premium/general/icons/icons.min.css | 1 +
.../gp-premium/general/js/smooth-scroll.js | 741 ++
.../general/js/smooth-scroll.min.js | 1 +
.../gp-premium/general/smooth-scroll.php | 102 +
.../plugins/gp-premium/gp-premium.php | 307 +
.../hooks/functions/assets/css/hooks.css | 59 +
.../hooks/functions/assets/js/admin.js | 38 +
.../functions/assets/js/jquery.cookie.js | 165 +
.../gp-premium/hooks/functions/functions.php | 542 ++
.../gp-premium/hooks/functions/hooks.php | 171 +
.../gp-premium/hooks/generate-hooks.php | 21 +
.../gp-premium/inc/class-dashboard.php | 401 +
.../plugins/gp-premium/inc/class-rest.php | 570 ++
.../gp-premium/inc/deprecated-admin.php | 790 ++
.../plugins/gp-premium/inc/deprecated.php | 718 ++
.../plugins/gp-premium/inc/functions.php | 152 +
.../gp-premium/inc/legacy/activation.php | 623 ++
.../inc/legacy/assets/dashboard.css | 199 +
.../gp-premium/inc/legacy/assets/dashboard.js | 48 +
.../gp-premium/inc/legacy/dashboard.php | 47 +
.../gp-premium/inc/legacy/import-export.php | 371 +
.../plugins/gp-premium/inc/legacy/reset.php | 273 +
.../plugins/gp-premium/langs/gp-premium-ar.mo | Bin 0 -> 32088 bytes
.../gp-premium/langs/gp-premium-bn_BD.mo | Bin 0 -> 42410 bytes
.../gp-premium/langs/gp-premium-cs_CZ.mo | Bin 0 -> 10096 bytes
.../gp-premium/langs/gp-premium-da_DK.mo | Bin 0 -> 28026 bytes
...e_DE-42da344ccb044413769d16ed3484307b.json | 1 +
...e_DE-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 +
...e_DE-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 +
.../gp-premium/langs/gp-premium-de_DE.mo | Bin 0 -> 59016 bytes
.../gp-premium/langs/gp-premium-es_AR.mo | Bin 0 -> 26952 bytes
...s_ES-42da344ccb044413769d16ed3484307b.json | 1 +
...s_ES-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 +
...s_ES-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 +
...s_ES-cbab080b0f20fd6c323029398be6c986.json | 1 +
...s_ES-ecf9f3c2af10c4f2dfbf4f42504922d1.json | 1 +
.../gp-premium/langs/gp-premium-es_ES.mo | Bin 0 -> 60021 bytes
...m-fi-42da344ccb044413769d16ed3484307b.json | 1 +
...m-fi-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 +
...m-fi-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 +
...m-fi-cbab080b0f20fd6c323029398be6c986.json | 1 +
...m-fi-ecf9f3c2af10c4f2dfbf4f42504922d1.json | 1 +
.../plugins/gp-premium/langs/gp-premium-fi.mo | Bin 0 -> 59294 bytes
...r_FR-42da344ccb044413769d16ed3484307b.json | 1 +
...r_FR-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 +
...r_FR-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 +
.../gp-premium/langs/gp-premium-fr_FR.mo | Bin 0 -> 39934 bytes
.../plugins/gp-premium/langs/gp-premium-hr.mo | Bin 0 -> 27851 bytes
.../gp-premium/langs/gp-premium-hu_HU.mo | Bin 0 -> 52216 bytes
.../gp-premium/langs/gp-premium-it_IT.mo | Bin 0 -> 39606 bytes
.../gp-premium/langs/gp-premium-nb_NO.mo | Bin 0 -> 25382 bytes
...l_NL-42da344ccb044413769d16ed3484307b.json | 1 +
...l_NL-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 +
...l_NL-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 +
...l_NL-cbab080b0f20fd6c323029398be6c986.json | 1 +
...l_NL-ecf9f3c2af10c4f2dfbf4f42504922d1.json | 1 +
.../gp-premium/langs/gp-premium-nl_NL.mo | Bin 0 -> 57069 bytes
.../gp-premium/langs/gp-premium-pl_PL.mo | Bin 0 -> 30953 bytes
.../gp-premium/langs/gp-premium-pt_BR.mo | Bin 0 -> 35160 bytes
...t_PT-42da344ccb044413769d16ed3484307b.json | 1 +
...t_PT-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 +
...t_PT-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 +
.../gp-premium/langs/gp-premium-pt_PT.mo | Bin 0 -> 36676 bytes
...u_RU-42da344ccb044413769d16ed3484307b.json | 1 +
...u_RU-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 +
...u_RU-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 +
.../gp-premium/langs/gp-premium-ru_RU.mo | Bin 0 -> 53478 bytes
...v_SE-42da344ccb044413769d16ed3484307b.json | 1 +
...v_SE-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 +
...v_SE-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 +
...v_SE-cbab080b0f20fd6c323029398be6c986.json | 1 +
...v_SE-ecf9f3c2af10c4f2dfbf4f42504922d1.json | 1 +
.../gp-premium/langs/gp-premium-sv_SE.mo | Bin 0 -> 49298 bytes
.../plugins/gp-premium/langs/gp-premium-uk.mo | Bin 0 -> 26349 bytes
.../plugins/gp-premium/langs/gp-premium-vi.mo | Bin 0 -> 31417 bytes
.../gp-premium/langs/gp-premium-zh_CN.mo | Bin 0 -> 52922 bytes
.../wp-color-picker-alpha.js | 635 ++
.../wp-color-picker-alpha.min.js | 11 +
.../gp-premium/library/class-make-css.php | 202 +
.../library/class-plugin-updater.php | 676 ++
.../gp-premium/library/customizer-helpers.php | 531 ++
.../library/customizer/active-callbacks.php | 601 ++
.../controls/class-action-button-control.php | 44 +
.../controls/class-alpha-color-control.php | 76 +
.../controls/class-backgrounds-control.php | 146 +
.../controls/class-control-toggle.php | 37 +
.../controls/class-copyright-control.php | 51 +
.../customizer/controls/class-deprecated.php | 396 +
.../controls/class-information-control.php | 42 +
.../controls/class-range-slider-control.php | 165 +
.../controls/class-refresh-button-control.php | 24 +
.../class-section-shortcuts-control.php | 123 +
.../controls/class-spacing-control.php | 165 +
.../controls/class-title-control.php | 32 +
.../controls/class-typography-control.php | 187 +
.../controls/css/alpha-color-picker.css | 32 +
.../controls/css/button-actions.css | 19 +
.../css/control-toggle-customizer.css | 21 +
.../controls/css/section-shortcuts.css | 43 +
.../customizer/controls/css/selectWoo.min.css | 1 +
.../controls/css/slider-customizer.css | 131 +
.../controls/css/spacing-customizer.css | 101 +
.../controls/css/title-customizer.css | 9 +
.../controls/css/transparency-grid.png | Bin 0 -> 2343 bytes
.../controls/css/typography-customizer.css | 60 +
.../controls/js/alpha-color-picker.js | 277 +
.../controls/js/backgrounds-customizer.js | 31 +
.../customizer/controls/js/button-actions.js | 43 +
.../controls/js/control-toggle-customizer.js | 35 +
.../controls/js/copyright-customizer.js | 12 +
.../controls/js/generatepress-controls.js | 151 +
.../controls/js/section-shortcuts.js | 46 +
.../customizer/controls/js/selectWoo.min.js | 1 +
.../controls/js/slider-customizer.js | 137 +
.../controls/js/spacing-customizer.js | 203 +
.../controls/js/typography-customizer.js | 148 +
.../library/customizer/deprecated.php | 324 +
.../library/customizer/sanitize.php | 131 +
.../library/select2/select2.full.min.js | 2 +
.../library/select2/select2.min.css | 1 +
.../menu-plus/fields/slideout-nav-colors.php | 185 +
.../menu-plus/functions/css/menu-logo.css | 76 +
.../menu-plus/functions/css/menu-logo.min.css | 1 +
.../css/navigation-branding-flex.css | 116 +
.../css/navigation-branding-flex.min.css | 1 +
.../functions/css/navigation-branding.css | 135 +
.../functions/css/navigation-branding.min.css | 1 +
.../menu-plus/functions/css/offside.css | 393 +
.../menu-plus/functions/css/offside.min.css | 1 +
.../menu-plus/functions/css/sticky.css | 76 +
.../menu-plus/functions/css/sticky.min.css | 1 +
.../functions/generate-menu-plus.php | 2447 ++++++
.../menu-plus/functions/js/offside.js | 646 ++
.../menu-plus/functions/js/offside.min.js | 1 +
.../menu-plus/functions/js/sticky.js | 650 ++
.../menu-plus/functions/js/sticky.min.js | 1 +
.../menu-plus/generate-menu-plus.php | 21 +
.../page-header/functions/css/metabox.css | 302 +
.../page-header/functions/css/page-header.css | 92 +
.../functions/css/page-header.min.css | 1 +
.../page-header/functions/functions.php | 1295 ++++
.../functions/global-locations.php | 220 +
.../page-header/functions/js/full-height.js | 66 +
.../functions/js/full-height.min.js | 1 +
.../functions/js/jquery.vide.min.js | 9 +
.../page-header/functions/js/lc_switch.js | 149 +
.../page-header/functions/js/metabox.js | 220 +
.../page-header/functions/js/parallax.js | 17 +
.../page-header/functions/js/parallax.min.js | 1 +
.../page-header/functions/metabox.php | 782 ++
.../page-header/functions/page-header.php | 184 +
.../page-header/functions/post-image.php | 60 +
.../page-header/functions/post-type.php | 236 +
.../page-header/generate-page-header.php | 21 +
.../plugins/gp-premium/readme.txt | 503 ++
.../fields/secondary-navigation.php | 174 +
.../secondary-nav/functions/css.php | 138 +
.../functions/css/main-mobile.css | 125 +
.../functions/css/main-mobile.min.css | 1 +
.../secondary-nav/functions/css/main.css | 377 +
.../secondary-nav/functions/css/main.min.css | 1 +
.../functions/css/style-mobile.css | 97 +
.../functions/css/style-mobile.min.css | 1 +
.../secondary-nav/functions/css/style.css | 337 +
.../secondary-nav/functions/css/style.min.css | 1 +
.../secondary-nav/functions/functions.php | 1356 ++++
.../secondary-nav/functions/js/customizer.js | 77 +
.../secondary-nav/generate-secondary-nav.php | 23 +
.../sections/functions/css/style.css | 57 +
.../sections/functions/css/style.min.css | 1 +
.../sections/functions/generate-sections.php | 329 +
.../sections/functions/js/parallax.js | 17 +
.../sections/functions/js/parallax.min.js | 1 +
.../css/generate-sections-metabox.css | 348 +
.../functions/metaboxes/css/lc_switch.css | 92 +
.../js/generate-sections-metabox-4.9.js | 835 ++
.../metaboxes/js/generate-sections-metabox.js | 858 +++
.../functions/metaboxes/metabox-functions.php | 396 +
.../metaboxes/views/sections-template.php | 279 +
.../functions/metaboxes/views/sections.php | 13 +
.../metaboxes/views/use-sections.php | 17 +
.../sections/functions/templates/template.php | 122 +
.../gp-premium/sections/generate-sections.php | 21 +
.../class-site-library-helper.php | 1021 +++
.../site-library/class-site-library-rest.php | 922 +++
.../site-library/class-site-library.php | 412 +
.../class-beaver-builder-batch-processing.php | 163 +
.../classes/class-content-importer.php | 49 +
.../classes/class-site-import-image.php | 200 +
.../classes/class-site-widget-importer.php | 275 +
.../libs/wxr-importer/WPImporterLogger.php | 138 +
.../libs/wxr-importer/WXRImportInfo.php | 16 +
.../libs/wxr-importer/WXRImporter.php | 2329 ++++++
.../functions/customizer/content-spacing.php | 244 +
.../functions/customizer/footer-spacing.php | 207 +
.../functions/customizer/header-spacing.php | 135 +
.../functions/customizer/js/customizer.js | 661 ++
.../customizer/navigation-spacing.php | 281 +
.../customizer/secondary-nav-spacing.php | 159 +
.../functions/customizer/sidebar-spacing.php | 211 +
.../functions/customizer/top-bar-spacing.php | 73 +
.../spacing/functions/functions.php | 362 +
.../spacing/functions/migration.php | 102 +
.../gp-premium/spacing/generate-spacing.php | 20 +
.../typography/functions/functions.php | 3125 ++++++++
.../typography/functions/google-fonts.json | 6835 +++++++++++++++++
.../typography/functions/js/customizer.js | 250 +
.../typography/functions/migration.php | 359 +
.../functions/secondary-nav-fonts.php | 176 +
.../functions/slideout-nav-fonts.php | 149 +
.../functions/woocommerce-fonts.php | 179 +
.../gp-premium/typography/generate-fonts.php | 20 +
.../woocommerce/fields/woocommerce-colors.php | 607 ++
.../functions/css/woocommerce-mobile.css | 201 +
.../functions/css/woocommerce-mobile.min.css | 1 +
.../woocommerce/functions/css/woocommerce.css | 1284 ++++
.../functions/css/woocommerce.min.css | 1 +
.../functions/customizer/customizer.php | 1031 +++
.../functions/customizer/js/customizer.js | 6 +
.../woocommerce/functions/functions.php | 1532 ++++
.../woocommerce/functions/js/woocommerce.js | 285 +
.../functions/js/woocommerce.min.js | 1 +
.../gp-premium/woocommerce/woocommerce.php | 19 +
.../plugins/gp-premium/wpml-config.xml | 112 +
.../plugins/jetpack-protect/CHANGELOG.md | 211 +
.../LICENSE => jetpack-protect/LICENSE.txt} | 188 +-
.../plugins/jetpack-protect/SECURITY.md | 47 +
.../assets/fonts/jetpack-protect.eot | Bin 0 -> 1496 bytes
.../assets/fonts/jetpack-protect.svg | 11 +
.../assets/fonts/jetpack-protect.ttf | Bin 0 -> 1300 bytes
.../assets/fonts/jetpack-protect.woff | Bin 0 -> 1376 bytes
.../assets/jetpack-protect.css | 30 +
.../in-progress-db145d62b5ef09c05ad7.png | Bin 0 -> 15681 bytes
.../jetpack-protect/build/index.asset.php | 1 +
.../plugins/jetpack-protect/build/index.css | 1 +
.../plugins/jetpack-protect/build/index.js | 47 +
.../build/index.js.LICENSE.txt | 35 +
.../jetpack-protect/build/index.rtl.css | 1 +
.../plugins/jetpack-protect/composer.json | 76 +
.../jetpack-protect/jetpack-protect.php | 123 +
.../jetpack-a8c-mc-stats/CHANGELOG.md | 155 +
.../jetpack-a8c-mc-stats/LICENSE.txt} | 188 +-
.../jetpack-a8c-mc-stats/SECURITY.md | 38 +
.../jetpack-a8c-mc-stats/composer.json | 39 +
.../src/class-a8c-mc-stats.php | 181 +
.../automattic/jetpack-admin-ui/CHANGELOG.md | 147 +
.../automattic/jetpack-admin-ui/LICENSE.txt} | 188 +-
.../automattic/jetpack-admin-ui/SECURITY.md | 38 +
.../automattic/jetpack-admin-ui/composer.json | 52 +
.../jetpack-admin-ui/src/class-admin-menu.php | 207 +
.../automattic/jetpack-assets/CHANGELOG.md | 456 ++
.../automattic/jetpack-assets/LICENSE.txt | 357 +
.../automattic/jetpack-assets/SECURITY.md | 47 +
.../automattic/jetpack-assets/actions.php | 19 +
.../build/i18n-loader.asset.php | 1 +
.../jetpack-assets/build/i18n-loader.js | 1 +
.../automattic/jetpack-assets/composer.json | 56 +
.../jetpack-assets/src/class-assets.php | 738 ++
.../jetpack-assets/src/class-semver.php | 121 +
.../jetpack-assets/src/js/i18n-loader.js | 76 +
.../automattic/jetpack-config/CHANGELOG.md | 230 +
.../automattic/jetpack-config/LICENSE.txt | 357 +
.../automattic/jetpack-config/SECURITY.md | 38 +
.../automattic/jetpack-config/composer.json | 31 +
.../jetpack-config/src/class-config.php | 454 ++
.../jetpack-connection/CHANGELOG.md | 1063 +++
.../automattic/jetpack-connection/LICENSE.txt | 357 +
.../automattic/jetpack-connection/SECURITY.md | 47 +
.../automattic/jetpack-connection/TRACKING.md | 122 +
.../jetpack-connection/composer.json | 67 +
.../dist/tracks-ajax.asset.php | 1 +
.../jetpack-connection/dist/tracks-ajax.js | 1 +
.../dist/tracks-callables.asset.php | 1 +
.../dist/tracks-callables.js | 1 +
.../legacy/class-jetpack-ixr-client.php | 180 +
.../class-jetpack-ixr-clientmulticall.php | 74 +
.../legacy/class-jetpack-options.php | 694 ++
.../legacy/class-jetpack-signature.php | 409 +
.../legacy/class-jetpack-tracks-client.php | 230 +
.../legacy/class-jetpack-tracks-event.php | 188 +
.../legacy/class-jetpack-xmlrpc-server.php | 877 +++
.../jetpack-connection/src/class-client.php | 497 ++
.../src/class-connection-notice.php | 243 +
.../src/class-error-handler.php | 775 ++
.../src/class-heartbeat.php | 252 +
.../src/class-initial-state.php | 61 +
.../jetpack-connection/src/class-manager.php | 2561 ++++++
.../src/class-nonce-handler.php | 212 +
.../src/class-package-version-tracker.php | 111 +
.../src/class-package-version.php | 30 +
.../src/class-plugin-storage.php | 268 +
.../jetpack-connection/src/class-plugin.php | 122 +
.../src/class-rest-authentication.php | 220 +
.../src/class-rest-connector.php | 850 ++
.../jetpack-connection/src/class-secrets.php | 281 +
.../src/class-server-sandbox.php | 243 +
.../src/class-terms-of-service.php | 111 +
.../src/class-tokens-locks.php | 76 +
.../jetpack-connection/src/class-tokens.php | 687 ++
.../jetpack-connection/src/class-tracking.php | 318 +
.../jetpack-connection/src/class-urls.php | 186 +
.../jetpack-connection/src/class-utils.php | 86 +
.../jetpack-connection/src/class-webhooks.php | 211 +
.../src/class-xmlrpc-async-call.php | 105 +
.../src/class-xmlrpc-connector.php | 83 +
.../src/interface-manager.php | 17 +
.../src/webhooks/class-authorize-redirect.php | 202 +
.../automattic/jetpack-constants/CHANGELOG.md | 189 +
.../automattic/jetpack-constants/LICENSE.txt | 357 +
.../automattic/jetpack-constants/SECURITY.md | 38 +
.../jetpack-constants/composer.json | 40 +
.../jetpack-constants/src/class-constants.php | 124 +
.../jetpack-device-detection/CHANGELOG.md | 199 +
.../jetpack-device-detection/LICENSE.txt | 357 +
.../jetpack-device-detection/SECURITY.md | 38 +
.../jetpack-device-detection/composer.json | 39 +
.../src/class-device-detection.php | 219 +
.../src/class-user-agent-info.php | 1572 ++++
.../src/functions.php | 36 +
.../jetpack-identity-crisis/CHANGELOG.md | 528 ++
.../jetpack-identity-crisis/LICENSE.txt | 357 +
.../jetpack-identity-crisis/SECURITY.md | 47 +
.../build/index.asset.php | 1 +
.../jetpack-identity-crisis/build/index.css | 1 +
.../jetpack-identity-crisis/build/index.js | 5 +
.../build/index.js.LICENSE.txt | 5 +
.../build/index.rtl.css | 1 +
.../jetpack-identity-crisis/composer.json | 67 +
.../src/_inc/admin-bar.scss | 30 +
.../src/_inc/admin.jsx | 60 +
.../src/_inc/style.scss | 9 +
.../src/class-exception.php | 13 +
.../src/class-identity-crisis.php | 1340 ++++
.../src/class-rest-endpoints.php | 236 +
.../jetpack-identity-crisis/src/class-ui.php | 201 +
.../src/class-url-secret.php | 134 +
.../automattic/jetpack-ip/CHANGELOG.md | 42 +
.../automattic/jetpack-ip/LICENSE.txt | 357 +
.../automattic/jetpack-ip/SECURITY.md | 38 +
.../automattic/jetpack-ip/composer.json | 44 +
.../automattic/jetpack-ip/src/class-utils.php | 245 +
.../automattic/jetpack-jitm/CHANGELOG.md | 776 ++
.../automattic/jetpack-jitm/LICENSE.txt | 357 +
.../automattic/jetpack-jitm/SECURITY.md | 47 +
.../background-165b2f00927a762c8cf4.png | Bin 0 -> 24109 bytes
.../jetpack-jitm/build/index.asset.php | 1 +
.../automattic/jetpack-jitm/build/index.css | 1 +
.../automattic/jetpack-jitm/build/index.js | 1 +
.../jetpack-jitm/build/index.rtl.css | 1 +
.../automattic/jetpack-jitm/composer.json | 63 +
.../jetpack-jitm/src/class-jitm.php | 313 +
.../src/class-post-connection-jitm.php | 417 +
.../src/class-pre-connection-jitm.php | 171 +
.../src/class-rest-api-endpoints.php | 96 +
.../src/css/jetpack-admin-jitm.scss | 501 ++
.../jetpack-jitm/src/images/background.png | Bin 0 -> 24109 bytes
.../automattic/jetpack-licensing/CHANGELOG.md | 306 +
.../automattic/jetpack-licensing/LICENSE.txt | 357 +
.../automattic/jetpack-licensing/SECURITY.md | 38 +
.../jetpack-licensing/composer.json | 50 +
.../jetpack-licensing/src/class-endpoints.php | 447 ++
.../jetpack-licensing/src/class-licensing.php | 359 +
.../automattic/jetpack-logo/CHANGELOG.md | 197 +
.../automattic/jetpack-logo/LICENSE.txt | 357 +
.../automattic/jetpack-logo/SECURITY.md | 38 +
.../automattic/jetpack-logo/composer.json | 39 +
.../jetpack-logo/src/class-logo.php | 122 +
.../jetpack-my-jetpack/CHANGELOG.md | 1199 +++
.../automattic/jetpack-my-jetpack/LICENSE.txt | 357 +
.../automattic/jetpack-my-jetpack/SECURITY.md | 47 +
.../images/apple-92dacafad84e79708a74.svg | 3 +
.../images/boost-a54137485af36fdffe9c.png | Bin 0 -> 148315 bytes
.../images/cloud-81ac85ba680343200f54.svg | 12 +
.../images/connect-f27775ac15cf885713c2.png | Bin 0 -> 62000 bytes
.../build/images/crm-7e7684ae2c40327d8fed.png | Bin 0 -> 119373 bytes
...isconnect-confirm-dc9fe8f5c68cfd1320e0.jpg | Bin 0 -> 25037 bytes
...disconnect-thanks-5873bfac56a9bd7322cd.jpg | Bin 0 -> 55604 bytes
.../empty-avatar-fea23feddfa99b07c2e8.svg | 40 +
.../images/extras-26daf36507504c96d066.png | Bin 0 -> 25957 bytes
.../images/google-dec2a429bf1d8e83f9ad.svg | 1 +
.../images/jetpack-9de1caef5eb5c22da5d6.svg | 23 +
.../jetpack-ai-29e60474d5890cbb6889.png | Bin 0 -> 56279 bytes
...ivation-with-lock-7b01c1a4cf56de799cd7.png | Bin 0 -> 144326 bytes
...tion-with-success-cad524ede4e793cc0ece.png | Bin 0 -> 145433 bytes
.../images/search-f9756bd9c926d905fe70.png | Bin 0 -> 94887 bytes
.../videopress-9591093a9a238cc48a35.png | Bin 0 -> 255812 bytes
.../images/wordpress-1fc3e0ba6c52e9707900.svg | 1 +
.../jetpack-my-jetpack/build/index.asset.php | 1 +
.../jetpack-my-jetpack/build/index.css | 1 +
.../jetpack-my-jetpack/build/index.js | 34 +
.../build/index.js.LICENSE.txt | 46 +
.../jetpack-my-jetpack/build/index.rtl.css | 1 +
.../jetpack-my-jetpack/composer.json | 79 +
.../src/class-initializer.php | 352 +
.../jetpack-my-jetpack/src/class-products.php | 183 +
.../jetpack-my-jetpack/src/class-rest-ai.php | 90 +
.../src/class-rest-product-data.php | 58 +
.../src/class-rest-products.php | 259 +
.../src/class-rest-purchases.php | 76 +
.../src/class-rest-zendesk-chat.php | 120 +
.../src/class-wpcom-products.php | 264 +
.../src/products/class-anti-spam.php | 137 +
.../src/products/class-backup.php | 234 +
.../src/products/class-boost.php | 292 +
.../src/products/class-crm.php | 124 +
.../src/products/class-extras.php | 140 +
.../src/products/class-hybrid-product.php | 192 +
.../src/products/class-jetpack-ai.php | 205 +
.../src/products/class-module-product.php | 133 +
.../src/products/class-product.php | 557 ++
.../src/products/class-protect.php | 238 +
.../src/products/class-scan.php | 231 +
.../src/products/class-search-stats.php | 150 +
.../src/products/class-search.php | 330 +
.../src/products/class-security.php | 212 +
.../src/products/class-social.php | 146 +
.../src/products/class-starter.php | 203 +
.../src/products/class-stats.php | 241 +
.../src/products/class-videopress.php | 169 +
.../automattic/jetpack-partner/CHANGELOG.md | 273 +
.../automattic/jetpack-partner/LICENSE.txt | 357 +
.../automattic/jetpack-partner/SECURITY.md | 38 +
.../automattic/jetpack-partner/composer.json | 51 +
.../src/class-partner-coupon.php | 463 ++
.../jetpack-partner/src/class-partner.php | 199 +
.../jetpack-password-checker/CHANGELOG.md | 133 +
.../jetpack-password-checker/LICENSE.txt | 357 +
.../jetpack-password-checker/SECURITY.md | 38 +
.../jetpack-password-checker/composer.json | 48 +
.../src/class-password-checker.php | 1313 ++++
.../jetpack-plugins-installer/CHANGELOG.md | 68 +
.../jetpack-plugins-installer/LICENSE.txt | 357 +
.../jetpack-plugins-installer/SECURITY.md | 38 +
.../jetpack-plugins-installer/composer.json | 42 +
.../src/class-automatic-install-skin.php | 155 +
.../src/class-plugins-installer.php | 291 +
.../automattic/jetpack-redirect/CHANGELOG.md | 230 +
.../automattic/jetpack-redirect/LICENSE.txt | 357 +
.../automattic/jetpack-redirect/SECURITY.md | 38 +
.../automattic/jetpack-redirect/composer.json | 42 +
.../jetpack-redirect/src/class-redirect.php | 79 +
.../automattic/jetpack-roles/CHANGELOG.md | 189 +
.../automattic/jetpack-roles/LICENSE.txt | 357 +
.../automattic/jetpack-roles/SECURITY.md | 38 +
.../automattic/jetpack-roles/composer.json | 40 +
.../jetpack-roles/src/class-roles.php | 81 +
.../automattic/jetpack-status/CHANGELOG.md | 351 +
.../automattic/jetpack-status/LICENSE.txt | 357 +
.../automattic/jetpack-status/SECURITY.md | 38 +
.../automattic/jetpack-status/composer.json | 43 +
.../jetpack-status/src/class-cache.php | 54 +
.../jetpack-status/src/class-cookiestate.php | 103 +
.../jetpack-status/src/class-errors.php | 43 +
.../jetpack-status/src/class-files.php | 54 +
.../jetpack-status/src/class-host.php | 122 +
.../jetpack-status/src/class-modules.php | 600 ++
.../jetpack-status/src/class-paths.php | 28 +
.../jetpack-status/src/class-status.php | 414 +
.../jetpack-status/src/class-visitor.php | 43 +
.../automattic/jetpack-sync/CHANGELOG.md | 1116 +++
.../automattic/jetpack-sync/LICENSE.txt | 357 +
.../automattic/jetpack-sync/SECURITY.md | 47 +
.../automattic/jetpack-sync/composer.json | 59 +
.../jetpack-sync/src/class-actions.php | 1100 +++
.../jetpack-sync/src/class-data-settings.php | 417 +
.../src/class-dedicated-sender.php | 423 +
.../src/class-default-filter-settings.php | 80 +
.../jetpack-sync/src/class-defaults.php | 1318 ++++
.../jetpack-sync/src/class-functions.php | 712 ++
.../jetpack-sync/src/class-health.php | 188 +
.../src/class-json-deflate-array-codec.php | 93 +
.../jetpack-sync/src/class-listener.php | 483 ++
.../jetpack-sync/src/class-lock.php | 77 +
.../jetpack-sync/src/class-main.php | 135 +
.../jetpack-sync/src/class-modules.php | 160 +
.../src/class-package-version.php | 30 +
.../jetpack-sync/src/class-queue-buffer.php | 78 +
.../jetpack-sync/src/class-queue.php | 678 ++
.../jetpack-sync/src/class-replicastore.php | 1457 ++++
.../jetpack-sync/src/class-rest-endpoints.php | 871 +++
.../jetpack-sync/src/class-rest-sender.php | 143 +
.../jetpack-sync/src/class-sender.php | 1001 +++
.../jetpack-sync/src/class-server.php | 195 +
.../jetpack-sync/src/class-settings.php | 681 ++
.../jetpack-sync/src/class-simple-codec.php | 62 +
.../jetpack-sync/src/class-users.php | 152 +
.../jetpack-sync/src/class-utils.php | 65 +
.../jetpack-sync/src/interface-codec.php | 44 +
.../src/interface-replicastore.php | 566 ++
.../src/modules/class-attachments.php | 98 +
.../src/modules/class-callables.php | 645 ++
.../src/modules/class-comments.php | 503 ++
.../src/modules/class-constants.php | 338 +
.../modules/class-full-sync-immediately.php | 469 ++
.../src/modules/class-full-sync.php | 729 ++
.../jetpack-sync/src/modules/class-import.php | 220 +
.../jetpack-sync/src/modules/class-menus.php | 146 +
.../jetpack-sync/src/modules/class-meta.php | 112 +
.../jetpack-sync/src/modules/class-module.php | 603 ++
.../src/modules/class-network-options.php | 251 +
.../src/modules/class-options.php | 480 ++
.../src/modules/class-plugins.php | 414 +
.../jetpack-sync/src/modules/class-posts.php | 783 ++
.../src/modules/class-protect.php | 54 +
.../jetpack-sync/src/modules/class-search.php | 1875 +++++
.../jetpack-sync/src/modules/class-stats.php | 68 +
.../src/modules/class-term-relationships.php | 244 +
.../jetpack-sync/src/modules/class-terms.php | 313 +
.../jetpack-sync/src/modules/class-themes.php | 876 +++
.../src/modules/class-updates.php | 589 ++
.../jetpack-sync/src/modules/class-users.php | 893 +++
.../modules/class-woocommerce-hpos-orders.php | 355 +
.../src/modules/class-woocommerce.php | 614 ++
.../src/modules/class-wp-super-cache.php | 156 +
.../class-table-checksum-usermeta.php | 208 +
.../class-table-checksum-users.php | 183 +
.../src/replicastore/class-table-checksum.php | 880 +++
.../class-queue-storage-options.php | 291 +
.../sync-queue/class-queue-storage-table.php | 663 ++
.../jetpack-transport-helper/CHANGELOG.md | 48 +
.../jetpack-transport-helper/LICENSE.txt | 357 +
.../jetpack-transport-helper/SECURITY.md | 47 +
.../jetpack-transport-helper/actions.php | 32 +
.../jetpack-transport-helper/composer.json | 58 +
.../src/class-helper-script-manager.php | 384 +
.../src/class-package-version.php | 30 +
.../src/class-rest-controller.php | 143 +
.../.phpcs.dir.phpcompatibility.xml | 6 +
.../automattic/jetpack-waf/.phpcsignore | 1 +
.../automattic/jetpack-waf/CHANGELOG.md | 282 +
.../automattic/jetpack-waf/LICENSE.txt | 357 +
.../automattic/jetpack-waf/SECURITY.md | 38 +
.../automattic/jetpack-waf/cli.php | 12 +
.../automattic/jetpack-waf/composer.json | 62 +
.../class-blocked-login-page.php | 773 ++
.../class-math-fallback.php | 180 +
.../class-shared-functions.php | 240 +
.../class-transient-cleanup.php | 63 +
.../src/class-brute-force-protection.php | 1159 +++
.../jetpack-waf/src/class-compatibility.php | 232 +
.../jetpack-waf/src/class-rest-controller.php | 176 +
.../jetpack-waf/src/class-waf-cli.php | 166 +
.../jetpack-waf/src/class-waf-constants.php | 104 +
.../jetpack-waf/src/class-waf-initializer.php | 243 +
.../jetpack-waf/src/class-waf-operators.php | 286 +
.../jetpack-waf/src/class-waf-request.php | 329 +
.../src/class-waf-rules-manager.php | 323 +
.../jetpack-waf/src/class-waf-runner.php | 437 ++
.../jetpack-waf/src/class-waf-runtime.php | 803 ++
.../src/class-waf-standalone-bootstrap.php | 171 +
.../jetpack-waf/src/class-waf-stats.php | 68 +
.../jetpack-waf/src/class-waf-transforms.php | 342 +
.../class-file-system-exception.php | 23 +
.../exceptions/class-rules-api-exception.php | 23 +
.../src/exceptions/class-waf-exception.php | 35 +
.../automattic/jetpack-waf/src/functions.php | 70 +
.../jetpack_vendor/i18n-map.php | 64 +
.../plugins/jetpack-protect/readme.txt | 167 +
.../jetpack-protect/src/class-credentials.php | 55 +
.../src/class-jetpack-protect.php | 456 ++
.../jetpack-protect/src/class-plan.php | 111 +
.../src/class-protect-status.php | 258 +
.../src/class-rest-controller.php | 427 +
.../jetpack-protect/src/class-scan-status.php | 359 +
.../jetpack-protect/src/class-site-health.php | 111 +
.../jetpack-protect/src/class-status.php | 313 +
.../jetpack-protect/src/class-threats.php | 202 +
.../src/models/class-extension-model.php | 110 +
.../src/models/class-status-model.php | 141 +
.../src/models/class-threat-model.php | 115 +
.../vendor/autoload.php | 2 +-
.../vendor/autoload_packages.php | 13 +
.../automattic/jetpack-plans/CHANGELOG.md | 124 +
.../automattic/jetpack-plans/LICENSE.txt | 357 +
.../automattic/jetpack-plans/SECURITY.md | 38 +
.../automattic/jetpack-plans/composer.json | 52 +
.../jetpack-plans/src/class-current-plan.php | 381 +
.../jetpack-plans/src/class-plans.php | 80 +
.../vendor/composer/ClassLoader.php | 0
.../vendor/composer/InstalledVersions.php | 0
.../vendor/composer/LICENSE | 0
.../vendor/composer/autoload_classmap.php | 209 +
.../vendor/composer/autoload_files.php | 12 +
.../vendor/composer/autoload_namespaces.php | 0
.../vendor/composer/autoload_psr4.php | 1 +
.../vendor/composer/autoload_real.php | 13 +-
.../vendor/composer/autoload_static.php | 241 +
.../vendor/composer/installed.json | 1484 ++++
.../vendor/composer/installed.php | 257 +
.../composer/jetpack_autoload_classmap.php | 861 +++
.../composer/jetpack_autoload_filemap.php | 21 +
.../vendor/composer/platform_check.php | 26 +
.../class-autoloader-handler.php | 147 +
.../class-autoloader-locator.php | 90 +
.../jetpack-autoloader/class-autoloader.php | 90 +
.../jetpack-autoloader/class-container.php | 150 +
.../jetpack-autoloader/class-hook-manager.php | 76 +
.../class-latest-autoloader-guard.php | 86 +
.../class-manifest-reader.php | 99 +
.../class-path-processor.php | 194 +
.../class-php-autoloader.php | 93 +
.../class-plugin-locator.php | 153 +
.../class-plugins-handler.php | 164 +
.../class-shutdown-handler.php | 92 +
.../class-version-loader.php | 164 +
.../class-version-selector.php | 69 +
.../vendor/wikimedia/aho-corasick/LICENSE | 202 +
.../vendor/wikimedia/aho-corasick/NOTICE | 2 +
.../wikimedia/aho-corasick/bench/bench.php | 75 +
.../wikimedia/aho-corasick/bench/check.php | 42 +
.../aho-corasick/src/MultiStringMatcher.php | 230 +
.../aho-corasick/src/MultiStringReplacer.php | 96 +
.../plugins/menu-icons/CHANGELOG.md | 116 -
.../plugins/menu-icons/CONTRIBUTING.md | 13 -
.../plugins/menu-icons/css/admin.css | 246 -
.../plugins/menu-icons/css/admin.min.css | 1 -
.../menu-icons/css/dashboard-notice.css | 45 -
.../menu-icons/css/dashboard-notice.min.css | 1 -
.../plugins/menu-icons/css/extra.css | 74 -
.../plugins/menu-icons/css/extra.min.css | 1 -
.../menu-icons/css/fontawesome/LICENSE.txt | 34 -
.../css/fontawesome/css/all.min.css | 6 -
.../fontawesome/webfonts/fa-brands-400.ttf | Bin 181264 -> 0 bytes
.../fontawesome/webfonts/fa-brands-400.woff2 | Bin 105112 -> 0 bytes
.../fontawesome/webfonts/fa-regular-400.ttf | Bin 60236 -> 0 bytes
.../fontawesome/webfonts/fa-regular-400.woff2 | Bin 24028 -> 0 bytes
.../css/fontawesome/webfonts/fa-solid-900.ttf | Bin 389948 -> 0 bytes
.../fontawesome/webfonts/fa-solid-900.woff2 | Bin 154840 -> 0 bytes
.../webfonts/fa-v4compatibility.ttf | Bin 10084 -> 0 bytes
.../webfonts/fa-v4compatibility.woff2 | Bin 4776 -> 0 bytes
.../plugins/menu-icons/images/neve-theme.jpg | Bin 11840 -> 0 bytes
.../plugins/menu-icons/images/otter-block.png | Bin 4779 -> 0 bytes
.../plugins/menu-icons/includes/front.php | 514 --
.../menu-icons/includes/library/compat.php | 23 -
.../backward-compatible-icons.php | 484 --
.../library/font-awesome/font-awesome.php | 122 -
.../includes/library/form-fields.php | 575 --
.../menu-icons/includes/library/functions.php | 111 -
.../menu-icons/includes/media-template.php | 127 -
.../plugins/menu-icons/includes/meta.php | 169 -
.../plugins/menu-icons/includes/picker.php | 305 -
.../plugins/menu-icons/includes/settings.php | 806 --
.../menu-icons/includes/type-fonts.php | 24 -
.../plugins/menu-icons/includes/type.php | 107 -
.../plugins/menu-icons/js/admin.js | 655 --
.../plugins/menu-icons/js/admin.min.js | 1 -
.../plugins/menu-icons/js/src/index.js | 2 -
.../plugins/menu-icons/js/src/media/index.js | 9 -
.../js/src/media/models/item-setting-field.js | 16 -
.../js/src/media/models/item-settings.js | 11 -
.../menu-icons/js/src/media/models/item.js | 27 -
.../menu-icons/js/src/media/views/frame.js | 46 -
.../js/src/media/views/item-preview.js | 51 -
.../js/src/media/views/item-setting-field.js | 38 -
.../js/src/media/views/item-settings.js | 30 -
.../menu-icons/js/src/media/views/sidebar.js | 101 -
.../plugins/menu-icons/js/src/picker.js | 190 -
.../plugins/menu-icons/js/src/settings.js | 60 -
.../menu-icons/languages/menu-icons.pot | 4066 ----------
.../plugins/menu-icons/mailin.php | 867 ---
.../plugins/menu-icons/menu-icons.php | 263 -
.../plugins/menu-icons/readme.md | 388 -
.../plugins/menu-icons/readme.txt | 497 --
.../gutenberg-menu-icons/CHANGELOG.md | 23 -
.../codeinwp/gutenberg-menu-icons/LICENSE | 674 --
.../codeinwp/gutenberg-menu-icons/README.md | 24 -
.../assets/css/font-awesome.min.css | 8 -
.../build/frontend.asset.php | 1 -
.../gutenberg-menu-icons/build/frontend.js | 1 -
.../build/index.asset.php | 1 -
.../gutenberg-menu-icons/build/index.css | 1 -
.../gutenberg-menu-icons/build/index.js | 1 -
.../build/style-frontend.css | 1 -
.../class-gutenberg-menu-icons.php | 169 -
.../codeinwp/gutenberg-menu-icons/load.php | 23 -
.../codeinwp/icon-picker/css/icon-picker.css | 79 -
.../icon-picker/css/icon-picker.min.css | 1 -
.../icon-picker/css/types/Elusive-Icons.eot | Bin 61828 -> 0 bytes
.../icon-picker/css/types/Elusive-Icons.svg | 309 -
.../icon-picker/css/types/Elusive-Icons.ttf | Bin 61640 -> 0 bytes
.../icon-picker/css/types/Elusive-Icons.woff | Bin 61716 -> 0 bytes
.../icon-picker/css/types/Genericons.eot | Bin 22374 -> 0 bytes
.../icon-picker/css/types/Genericons.svg | 537 --
.../icon-picker/css/types/Genericons.ttf | Bin 22188 -> 0 bytes
.../icon-picker/css/types/Genericons.woff | Bin 13988 -> 0 bytes
.../icon-picker/css/types/elusive.css | 922 ---
.../icon-picker/css/types/elusive.min.css | 1 -
.../icon-picker/css/types/font-awesome.css | 2337 ------
.../css/types/font-awesome.min.css | 4 -
.../css/types/fontawesome-webfont.eot | Bin 165742 -> 0 bytes
.../css/types/fontawesome-webfont.svg | 2671 -------
.../css/types/fontawesome-webfont.ttf | Bin 165548 -> 0 bytes
.../css/types/fontawesome-webfont.woff | Bin 98024 -> 0 bytes
.../css/types/fontawesome-webfont.woff2 | Bin 77160 -> 0 bytes
.../css/types/foundation-icons.css | 594 --
.../css/types/foundation-icons.eot | Bin 54568 -> 0 bytes
.../css/types/foundation-icons.min.css | 1 -
.../css/types/foundation-icons.svg | 970 ---
.../css/types/foundation-icons.ttf | Bin 56976 -> 0 bytes
.../css/types/foundation-icons.woff | Bin 32020 -> 0 bytes
.../icon-picker/css/types/genericons.css | 262 -
.../icon-picker/css/types/genericons.min.css | 1 -
.../codeinwp/icon-picker/icon-picker.php | 342 -
.../icon-picker/includes/fields/base.php | 104 -
.../icon-picker/includes/fields/cmb.php | 48 -
.../icon-picker/includes/fontpack.php | 285 -
.../codeinwp/icon-picker/includes/loader.php | 335 -
.../icon-picker/includes/registry.php | 178 -
.../icon-picker/includes/types/base.php | 152 -
.../icon-picker/includes/types/dashicons.php | 1229 ---
.../icon-picker/includes/types/elusive.php | 1554 ----
.../icon-picker/includes/types/fa.php | 3676 ---------
.../icon-picker/includes/types/font.php | 205 -
.../icon-picker/includes/types/fontello.php | 55 -
.../includes/types/foundation-icons.php | 1518 ----
.../icon-picker/includes/types/genericon.php | 856 ---
.../icon-picker/includes/types/image.php | 126 -
.../icon-picker/includes/types/svg.php | 124 -
.../codeinwp/icon-picker/js/icon-picker.js | 1008 ---
.../icon-picker/js/icon-picker.min.js | 1 -
.../icon-picker/languages/icon-picker.pot | 3460 ---------
.../vendor/codeinwp/icon-picker/readme.txt | 71 -
.../doc/menu-item-custom-fields-example.php | 138 -
.../menu-item-custom-fields.php | 61 -
.../menu-item-custom-fields/readme.txt | 60 -
.../walker-nav-menu-edit.php | 81 -
.../codeinwp/themeisle-sdk/CHANGELOG.md | 362 -
.../vendor/codeinwp/themeisle-sdk/LICENSE | 674 --
.../themeisle-sdk/assets/images/animation.jpg | Bin 4818 -> 0 bytes
.../assets/images/conditions.jpg | Bin 20394 -> 0 bytes
.../themeisle-sdk/assets/images/css.jpg | Bin 8893 -> 0 bytes
.../themeisle-sdk/assets/images/neve.png | Bin 1647 -> 0 bytes
.../assets/images/optimole-logo.svg | 31 -
.../assets/images/otter/otter-builder.png | Bin 27039 -> 0 bytes
.../assets/images/otter/otter-library.png | Bin 177336 -> 0 bytes
.../assets/images/otter/otter-patterns.png | Bin 89598 -> 0 bytes
.../themeisle-sdk/assets/images/sparks.png | Bin 2688 -> 0 bytes
.../themeisle-sdk/assets/images/team.jpg | Bin 685131 -> 0 bytes
.../themeisle-sdk/assets/images/wplk.png | Bin 1968 -> 0 bytes
.../assets/js/build/about/about.asset.php | 1 -
.../assets/js/build/about/about.css | 388 -
.../assets/js/build/about/about.js | 772 --
.../assets/js/build/promos/index.asset.php | 1 -
.../assets/js/build/promos/index.js | 1311 ----
.../assets/js/build/promos/style-index.css | 250 -
.../vendor/codeinwp/themeisle-sdk/index.php | 3 -
.../vendor/codeinwp/themeisle-sdk/load.php | 218 -
.../codeinwp/themeisle-sdk/postcss.config.js | 10 -
.../src/Common/Abstract_module.php | 221 -
.../src/Common/Module_factory.php | 108 -
.../codeinwp/themeisle-sdk/src/Loader.php | 150 -
.../themeisle-sdk/src/Modules/About_us.php | 411 -
.../src/Modules/Compatibilities.php | 236 -
.../src/Modules/Dashboard_widget.php | 474 --
.../themeisle-sdk/src/Modules/Licenser.php | 1155 ---
.../themeisle-sdk/src/Modules/Logger.php | 179 -
.../src/Modules/Notification.php | 515 --
.../themeisle-sdk/src/Modules/Promotions.php | 1006 ---
.../src/Modules/Recommendation.php | 334 -
.../themeisle-sdk/src/Modules/Review.php | 117 -
.../themeisle-sdk/src/Modules/Rollback.php | 400 -
.../themeisle-sdk/src/Modules/Translate.php | 918 ---
.../src/Modules/Uninstall_feedback.php | 860 ---
.../themeisle-sdk/src/Modules/Welcome.php | 193 -
.../codeinwp/themeisle-sdk/src/Product.php | 460 --
.../vendor/codeinwp/themeisle-sdk/start.php | 52 -
.../vendor/composer/autoload_classmap.php | 10 -
.../vendor/composer/autoload_files.php | 13 -
.../vendor/composer/autoload_static.php | 27 -
.../menu-icons/vendor/composer/installed.json | 171 -
.../menu-icons/vendor/composer/installed.php | 65 -
.../smtp-mailer/languages/smtp-mailer.mo | Bin 0 -> 396 bytes
.../smtp-mailer/languages/smtp-mailer.pot | 176 +
.../plugins/smtp-mailer/main.php | 899 +++
.../plugins/smtp-mailer/readme.txt | 134 +
958 files changed, 177242 insertions(+), 49479 deletions(-)
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/.distignore
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/LICENSE
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/activitypub.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-admin.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/assets/img/mp.jpg
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/assets/img/wp-logo.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-admin.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/block.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-index.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/block.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-activity.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-actor.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-base-object.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activity-dispatcher.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activitypub.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-admin.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-blocks.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-debug.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-handler.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-hashtag.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-health-check.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-http.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mention.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-migration.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-scheduler.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-shortcodes.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-signature.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-webfinger.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-followers.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-interactions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-users.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/compat.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/debug.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-create.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-delete.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-follow.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-undo.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-update.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/help.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-application-user.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-blog-user.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-follower.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-post.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-user.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/peer/class-followers.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-collection.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-followers.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-following.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-inbox.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-nodeinfo.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-outbox.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-server.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-users.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-webfinger.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/table/class-followers.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-post.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-buddypress.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-nodeinfo.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-webfinger.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/readme.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/admin-header.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/author-json.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-json.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-user-followers-list.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/post-json.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/settings.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-followers-list.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-settings.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/welcome.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/.phive/phars.xml
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/LICENSE.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/README.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/authLdap.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/authLdap.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/phpcs.xml
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/readme.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/security.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/Error.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/InvalidLdapUri.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/MissingValidLdapConnection.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/SearchUnsuccessfull.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/src/LdapList.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/src/LdapUri.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/src/Manager/Ldap.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/src/UserRoleHandler.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/Ldap.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/LdapFactory.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/LdapInterface.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/authldap/view/admin.phtml
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/css.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/secondary-nav-backgrounds.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/generate-backgrounds.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/columns.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/customizer.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/defaults.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/generate-blog.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/images.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/controls.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/infinite-scroll.pkgd.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/scripts.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/scripts.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/migrate.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/generate-blog.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/menu-plus-customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/wc-customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/secondary-nav-colors.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/slideout-nav-colors.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/woocommerce-colors.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/generate-colors.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/functions/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/functions/js/customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/generate-copyright.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/disable-elements/functions/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/disable-elements/generate-disable-elements.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/author-image-placeholder.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/background-image-fallback.jpg
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/balloon.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/elements.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/elements.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/featured-image-placeholder.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/metabox.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/metabox.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/spinner.gif
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/js/parallax.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/js/parallax.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-block-elements.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-block.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-conditions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-elements-helper.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-hero.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-hooks.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-layout.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-metabox.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-post-type.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/elements.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/class-external-file-css.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/enqueue-scripts.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.eot
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.svg
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.ttf
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.woff
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/icons.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/icons.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/js/smooth-scroll.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/js/smooth-scroll.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/smooth-scroll.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/gp-premium.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/css/hooks.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/js/admin.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/js/jquery.cookie.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/hooks.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/generate-hooks.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-dashboard.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-rest.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/deprecated-admin.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/deprecated.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/activation.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/assets/dashboard.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/assets/dashboard.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/dashboard.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/import-export.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/reset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ar.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-bn_BD.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-cs_CZ.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-da_DK.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-de_DE-42da344ccb044413769d16ed3484307b.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-de_DE-53e2a1d5945b8d2b1c35e81ae1e532f3.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-de_DE-92fa58377f1b6f7bef9c785c31ae29ff.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-de_DE.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_AR.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-42da344ccb044413769d16ed3484307b.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-53e2a1d5945b8d2b1c35e81ae1e532f3.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-92fa58377f1b6f7bef9c785c31ae29ff.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-cbab080b0f20fd6c323029398be6c986.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-ecf9f3c2af10c4f2dfbf4f42504922d1.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi-42da344ccb044413769d16ed3484307b.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi-53e2a1d5945b8d2b1c35e81ae1e532f3.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi-92fa58377f1b6f7bef9c785c31ae29ff.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi-cbab080b0f20fd6c323029398be6c986.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi-ecf9f3c2af10c4f2dfbf4f42504922d1.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-42da344ccb044413769d16ed3484307b.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-53e2a1d5945b8d2b1c35e81ae1e532f3.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-92fa58377f1b6f7bef9c785c31ae29ff.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-hr.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-hu_HU.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-it_IT.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nb_NO.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-42da344ccb044413769d16ed3484307b.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-53e2a1d5945b8d2b1c35e81ae1e532f3.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-92fa58377f1b6f7bef9c785c31ae29ff.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-cbab080b0f20fd6c323029398be6c986.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-ecf9f3c2af10c4f2dfbf4f42504922d1.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pl_PL.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pt_BR.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pt_PT-42da344ccb044413769d16ed3484307b.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pt_PT-53e2a1d5945b8d2b1c35e81ae1e532f3.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pt_PT-92fa58377f1b6f7bef9c785c31ae29ff.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pt_PT.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-42da344ccb044413769d16ed3484307b.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-53e2a1d5945b8d2b1c35e81ae1e532f3.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-92fa58377f1b6f7bef9c785c31ae29ff.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-42da344ccb044413769d16ed3484307b.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-53e2a1d5945b8d2b1c35e81ae1e532f3.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-92fa58377f1b6f7bef9c785c31ae29ff.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-cbab080b0f20fd6c323029398be6c986.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-ecf9f3c2af10c4f2dfbf4f42504922d1.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-uk.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-vi.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-zh_CN.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/alpha-color-picker/wp-color-picker-alpha.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/alpha-color-picker/wp-color-picker-alpha.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/class-make-css.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/class-plugin-updater.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer-helpers.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/active-callbacks.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-action-button-control.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-alpha-color-control.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-backgrounds-control.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-control-toggle.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-copyright-control.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-deprecated.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-information-control.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-range-slider-control.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-refresh-button-control.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-section-shortcuts-control.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-spacing-control.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-title-control.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-typography-control.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/alpha-color-picker.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/button-actions.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/control-toggle-customizer.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/section-shortcuts.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/selectWoo.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/slider-customizer.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/spacing-customizer.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/title-customizer.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/transparency-grid.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/typography-customizer.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/alpha-color-picker.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/backgrounds-customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/button-actions.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/control-toggle-customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/copyright-customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/generatepress-controls.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/section-shortcuts.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/selectWoo.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/slider-customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/spacing-customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/typography-customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/deprecated.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/sanitize.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/select2/select2.full.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/select2/select2.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/fields/slideout-nav-colors.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/menu-logo.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/menu-logo.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/navigation-branding-flex.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/navigation-branding-flex.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/navigation-branding.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/navigation-branding.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/offside.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/offside.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/sticky.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/sticky.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/generate-menu-plus.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/js/offside.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/js/offside.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/js/sticky.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/js/sticky.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/generate-menu-plus.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/css/metabox.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/css/page-header.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/css/page-header.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/global-locations.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/full-height.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/full-height.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/jquery.vide.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/lc_switch.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/metabox.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/parallax.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/parallax.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/metabox.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/page-header.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/post-image.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/post-type.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/generate-page-header.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/readme.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/fields/secondary-navigation.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main-mobile.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main-mobile.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style-mobile.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style-mobile.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/js/customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/generate-secondary-nav.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/css/style.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/css/style.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/generate-sections.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/js/parallax.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/js/parallax.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/css/generate-sections-metabox.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/css/lc_switch.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/js/generate-sections-metabox-4.9.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/js/generate-sections-metabox.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/metabox-functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/sections-template.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/sections.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/use-sections.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/templates/template.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/generate-sections.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library-helper.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library-rest.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-beaver-builder-batch-processing.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-content-importer.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-site-import-image.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-site-widget-importer.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WPImporterLogger.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WXRImportInfo.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WXRImporter.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/content-spacing.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/footer-spacing.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/header-spacing.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/js/customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/navigation-spacing.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/secondary-nav-spacing.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/sidebar-spacing.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/top-bar-spacing.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/migration.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/generate-spacing.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/google-fonts.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/js/customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/migration.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/secondary-nav-fonts.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/slideout-nav-fonts.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/woocommerce-fonts.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/generate-fonts.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/fields/woocommerce-colors.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce-mobile.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce-mobile.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce.min.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/customizer/customizer.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/customizer/js/customizer.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/js/woocommerce.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/js/woocommerce.min.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/woocommerce.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/wpml-config.xml
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/CHANGELOG.md
rename wp-content/upgrade-temp-backup/plugins/{menu-icons/vendor/codeinwp/icon-picker/LICENSE => jetpack-protect/LICENSE.txt} (68%)
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.eot
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.svg
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.ttf
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.woff
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/jetpack-protect.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/images/in-progress-db145d62b5ef09c05ad7.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.js.LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.rtl.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack-protect.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/CHANGELOG.md
rename wp-content/upgrade-temp-backup/plugins/{menu-icons/LICENSE => jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/LICENSE.txt} (68%)
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/src/class-a8c-mc-stats.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/CHANGELOG.md
rename wp-content/upgrade-temp-backup/plugins/{menu-icons/vendor/codeinwp/menu-item-custom-fields/LICENSE => jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/LICENSE.txt} (68%)
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/src/class-admin-menu.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/actions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/src/class-semver.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/src/js/i18n-loader.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-config/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-config/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-config/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-config/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-config/src/class-config.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/TRACKING.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/tracks-ajax.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/tracks-ajax.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/tracks-callables.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/tracks-callables.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-client.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-clientmulticall.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-options.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-signature.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-client.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-event.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-xmlrpc-server.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-client.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-connection-notice.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-error-handler.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-heartbeat.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-initial-state.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-manager.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-nonce-handler.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-package-version-tracker.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-package-version.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-plugin-storage.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-plugin.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-rest-authentication.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-rest-connector.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-secrets.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-server-sandbox.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tokens-locks.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tokens.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tracking.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-urls.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-utils.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-webhooks.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-async-call.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/interface-manager.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/webhooks/class-authorize-redirect.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/class-device-detection.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/class-user-agent-info.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/build/index.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/build/index.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/build/index.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/build/index.js.LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/build/index.rtl.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/src/_inc/admin-bar.scss
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/src/_inc/admin.jsx
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/src/_inc/style.scss
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/src/class-exception.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/src/class-identity-crisis.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/src/class-rest-endpoints.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/src/class-ui.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-identity-crisis/src/class-url-secret.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/src/class-utils.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/images/background-165b2f00927a762c8cf4.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.rtl.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-jitm.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-post-connection-jitm.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-pre-connection-jitm.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/css/jetpack-admin-jitm.scss
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/images/background.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/src/class-endpoints.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/src/class-licensing.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/src/class-logo.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/apple-92dacafad84e79708a74.svg
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/boost-a54137485af36fdffe9c.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/cloud-81ac85ba680343200f54.svg
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/connect-f27775ac15cf885713c2.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/crm-7e7684ae2c40327d8fed.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/disconnect-confirm-dc9fe8f5c68cfd1320e0.jpg
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/disconnect-thanks-5873bfac56a9bd7322cd.jpg
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/empty-avatar-fea23feddfa99b07c2e8.svg
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/extras-26daf36507504c96d066.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/google-dec2a429bf1d8e83f9ad.svg
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-9de1caef5eb5c22da5d6.svg
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-ai-29e60474d5890cbb6889.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-license-activation-with-lock-7b01c1a4cf56de799cd7.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-license-activation-with-success-cad524ede4e793cc0ece.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/search-f9756bd9c926d905fe70.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/videopress-9591093a9a238cc48a35.png
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/wordpress-1fc3e0ba6c52e9707900.svg
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.asset.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.js
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.js.LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.rtl.css
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-initializer.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-ai.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-product-data.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-products.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-purchases.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-zendesk-chat.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-wpcom-products.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-anti-spam.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-backup.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-boost.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-crm.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-extras.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-hybrid-product.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-jetpack-ai.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-product.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-protect.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-scan.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search-stats.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-security.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-social.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-starter.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-stats.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-videopress.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-partner/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-partner/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-partner/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-partner/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-partner/src/class-partner-coupon.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-partner/src/class-partner.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/src/class-password-checker.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-automatic-install-skin.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-plugins-installer.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/src/class-redirect.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/src/class-roles.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-cache.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-cookiestate.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-errors.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-files.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-host.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-modules.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-paths.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-status.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-visitor.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-actions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-data-settings.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-dedicated-sender.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-default-filter-settings.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-defaults.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-health.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-listener.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-lock.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-main.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-modules.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-package-version.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-queue-buffer.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-queue.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-replicastore.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-rest-endpoints.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-rest-sender.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-sender.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-server.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-settings.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-simple-codec.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-users.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-utils.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/interface-codec.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/interface-replicastore.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-attachments.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-callables.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-comments.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-constants.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync-immediately.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-import.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-menus.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-meta.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-module.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-network-options.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-options.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-plugins.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-posts.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-protect.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-search.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-stats.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-term-relationships.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-terms.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-themes.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-updates.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-users.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce-hpos-orders.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-wp-super-cache.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-usermeta.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-users.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-options.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-table.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/actions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/src/class-helper-script-manager.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/src/class-rest-controller.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/.phpcs.dir.phpcompatibility.xml
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/.phpcsignore
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/cli.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-blocked-login-page.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-math-fallback.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-shared-functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-transient-cleanup.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-brute-force-protection.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-compatibility.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-rest-controller.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-cli.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-constants.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-initializer.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-operators.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-request.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-rules-manager.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runner.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runtime.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-standalone-bootstrap.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-stats.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-transforms.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-file-system-exception.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-rules-api-exception.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-waf-exception.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/functions.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/i18n-map.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/readme.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-credentials.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-jetpack-protect.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-plan.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-protect-status.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-rest-controller.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-scan-status.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-site-health.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-status.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-threats.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/models/class-extension-model.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/models/class-status-model.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/models/class-threat-model.php
rename wp-content/upgrade-temp-backup/plugins/{menu-icons => jetpack-protect}/vendor/autoload.php (88%)
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/autoload_packages.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/CHANGELOG.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/LICENSE.txt
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/SECURITY.md
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/composer.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/src/class-current-plan.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/src/class-plans.php
rename wp-content/upgrade-temp-backup/plugins/{menu-icons => jetpack-protect}/vendor/composer/ClassLoader.php (100%)
rename wp-content/upgrade-temp-backup/plugins/{menu-icons => jetpack-protect}/vendor/composer/InstalledVersions.php (100%)
rename wp-content/upgrade-temp-backup/plugins/{menu-icons => jetpack-protect}/vendor/composer/LICENSE (100%)
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_classmap.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_files.php
rename wp-content/upgrade-temp-backup/plugins/{menu-icons => jetpack-protect}/vendor/composer/autoload_namespaces.php (100%)
rename wp-content/upgrade-temp-backup/plugins/{menu-icons => jetpack-protect}/vendor/composer/autoload_psr4.php (56%)
rename wp-content/upgrade-temp-backup/plugins/{menu-icons => jetpack-protect}/vendor/composer/autoload_real.php (60%)
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_static.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/installed.json
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/installed.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/jetpack_autoload_classmap.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/jetpack_autoload_filemap.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/platform_check.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader-handler.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader-locator.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-container.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-hook-manager.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-latest-autoloader-guard.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-manifest-reader.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-path-processor.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-php-autoloader.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-plugin-locator.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-plugins-handler.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-shutdown-handler.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-version-loader.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-version-selector.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/LICENSE
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/NOTICE
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/bench/bench.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/bench/check.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/src/MultiStringMatcher.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/src/MultiStringReplacer.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/CHANGELOG.md
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/CONTRIBUTING.md
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/admin.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/admin.min.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/dashboard-notice.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/dashboard-notice.min.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/extra.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/extra.min.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/LICENSE.txt
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/css/all.min.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-brands-400.ttf
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-brands-400.woff2
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-regular-400.ttf
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-regular-400.woff2
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-solid-900.ttf
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-solid-900.woff2
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-v4compatibility.ttf
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-v4compatibility.woff2
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/images/neve-theme.jpg
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/images/otter-block.png
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/front.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/library/compat.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/library/font-awesome/backward-compatible-icons.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/library/font-awesome/font-awesome.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/library/form-fields.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/library/functions.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/media-template.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/meta.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/picker.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/settings.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/type-fonts.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/type.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/admin.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/admin.min.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/index.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/index.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/models/item-setting-field.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/models/item-settings.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/models/item.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/views/frame.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/views/item-preview.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/views/item-setting-field.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/views/item-settings.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/views/sidebar.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/picker.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/settings.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/languages/menu-icons.pot
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/mailin.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/menu-icons.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/readme.md
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/readme.txt
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/CHANGELOG.md
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/LICENSE
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/README.md
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/assets/css/font-awesome.min.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/frontend.asset.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/frontend.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/index.asset.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/index.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/index.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/style-frontend.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/class-gutenberg-menu-icons.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/load.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/icon-picker.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/icon-picker.min.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Elusive-Icons.eot
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Elusive-Icons.svg
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Elusive-Icons.ttf
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Elusive-Icons.woff
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Genericons.eot
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Genericons.svg
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Genericons.ttf
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Genericons.woff
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/elusive.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/elusive.min.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/font-awesome.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/font-awesome.min.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/fontawesome-webfont.eot
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/fontawesome-webfont.svg
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/fontawesome-webfont.ttf
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/fontawesome-webfont.woff
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/fontawesome-webfont.woff2
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.eot
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.min.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.svg
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.ttf
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.woff
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/genericons.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/genericons.min.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/icon-picker.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/fields/base.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/fields/cmb.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/fontpack.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/loader.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/registry.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/base.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/dashicons.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/elusive.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/fa.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/font.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/fontello.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/foundation-icons.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/genericon.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/image.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/svg.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/js/icon-picker.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/js/icon-picker.min.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/languages/icon-picker.pot
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/readme.txt
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/menu-item-custom-fields/doc/menu-item-custom-fields-example.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/menu-item-custom-fields/menu-item-custom-fields.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/menu-item-custom-fields/readme.txt
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/menu-item-custom-fields/walker-nav-menu-edit.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/CHANGELOG.md
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/LICENSE
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/animation.jpg
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/conditions.jpg
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/css.jpg
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/neve.png
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/optimole-logo.svg
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/otter/otter-builder.png
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/otter/otter-library.png
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/otter/otter-patterns.png
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/sparks.png
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/team.jpg
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/wplk.png
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/about/about.asset.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/about/about.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/about/about.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/promos/index.asset.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/promos/index.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/promos/style-index.css
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/index.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/load.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/postcss.config.js
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Common/Abstract_module.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Common/Module_factory.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Loader.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/About_us.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Compatibilities.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Dashboard_widget.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Licenser.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Logger.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Notification.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Promotions.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Recommendation.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Review.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Rollback.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Translate.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Uninstall_feedback.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Welcome.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Product.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/start.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/autoload_classmap.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/autoload_files.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/autoload_static.php
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/installed.json
delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/installed.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/languages/smtp-mailer.mo
create mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/languages/smtp-mailer.pot
create mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/main.php
create mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/readme.txt
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/.distignore b/wp-content/upgrade-temp-backup/plugins/activitypub/.distignore
new file mode 100644
index 00000000..871e8074
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/.distignore
@@ -0,0 +1,41 @@
+.DS_Store
+.editorconfig
+.git
+.gitignore
+.github
+.travis.yml
+.codeclimate.yml
+.data
+.svnignore
+.wordpress-org
+.php_cs
+Gruntfile.js
+LINGUAS
+Makefile
+README.md
+readme.md
+CODE_OF_CONDUCT.md
+FEDERATION.md
+SECURITY.md
+LICENSE.md
+_site
+_config.yml
+bin
+composer.json
+composer.lock
+docker-compose.yml
+docker-compose-test.yml
+Dockerfile
+gulpfile.js
+package.json
+node_modules
+npm-debug.log
+phpcs.xml
+package.json
+package-lock.json
+phpunit.xml
+phpunit.xml.dist
+tests
+node_modules
+vendor
+src
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/LICENSE b/wp-content/upgrade-temp-backup/plugins/activitypub/LICENSE
new file mode 100644
index 00000000..644800f2
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2019 Matthias Pfefferle
+Copyright (c) 2023 Automattic
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/activitypub.php b/wp-content/upgrade-temp-backup/plugins/activitypub/activitypub.php
new file mode 100644
index 00000000..abab5f09
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/activitypub.php
@@ -0,0 +1,214 @@
+)|(?<= )|^)#([A-Za-z0-9_]+)(?:(?=\s|[[:punct:]]|$))' );
+\defined( 'ACTIVITYPUB_USERNAME_REGEXP' ) || \define( 'ACTIVITYPUB_USERNAME_REGEXP', '(?:([A-Za-z0-9_-]+)@((?:[A-Za-z0-9_-]+\.)+[A-Za-z]+))' );
+\defined( 'ACTIVITYPUB_CUSTOM_POST_CONTENT' ) || \define( 'ACTIVITYPUB_CUSTOM_POST_CONTENT', "[ap_title] \n\n[ap_content]\n\n[ap_hashtags]\n\n[ap_shortlink]" );
+\defined( 'ACTIVITYPUB_AUTHORIZED_FETCH' ) || \define( 'ACTIVITYPUB_AUTHORIZED_FETCH', false );
+\defined( 'ACTIVITYPUB_DISABLE_REWRITES' ) || \define( 'ACTIVITYPUB_DISABLE_REWRITES', false );
+
+\define( 'ACTIVITYPUB_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
+\define( 'ACTIVITYPUB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
+\define( 'ACTIVITYPUB_PLUGIN_FILE', plugin_dir_path( __FILE__ ) . '/' . basename( __FILE__ ) );
+\define( 'ACTIVITYPUB_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
+
+/**
+ * Initialize REST routes.
+ */
+function rest_init() {
+ Rest\Users::init();
+ Rest\Outbox::init();
+ Rest\Inbox::init();
+ Rest\Followers::init();
+ Rest\Following::init();
+ Rest\Webfinger::init();
+ Rest\Server::init();
+ Rest\Collection::init();
+
+ // load NodeInfo endpoints only if blog is public
+ if ( is_blog_public() ) {
+ Rest\NodeInfo::init();
+ }
+}
+\add_action( 'rest_api_init', __NAMESPACE__ . '\rest_init' );
+
+/**
+ * Initialize plugin.
+ */
+function plugin_init() {
+ \add_action( 'init', array( __NAMESPACE__ . '\Migration', 'init' ) );
+ \add_action( 'init', array( __NAMESPACE__ . '\Activitypub', 'init' ) );
+ \add_action( 'init', array( __NAMESPACE__ . '\Activity_Dispatcher', 'init' ) );
+ \add_action( 'init', array( __NAMESPACE__ . '\Handler', 'init' ) );
+ \add_action( 'init', array( __NAMESPACE__ . '\Admin', 'init' ) );
+ \add_action( 'init', array( __NAMESPACE__ . '\Hashtag', 'init' ) );
+ \add_action( 'init', array( __NAMESPACE__ . '\Mention', 'init' ) );
+ \add_action( 'init', array( __NAMESPACE__ . '\Health_Check', 'init' ) );
+ \add_action( 'init', array( __NAMESPACE__ . '\Scheduler', 'init' ) );
+
+ if ( site_supports_blocks() ) {
+ \add_action( 'init', array( __NAMESPACE__ . '\Blocks', 'init' ) );
+ }
+
+ $debug_file = __DIR__ . '/includes/debug.php';
+ if ( \WP_DEBUG && file_exists( $debug_file ) && is_readable( $debug_file ) ) {
+ require_once $debug_file;
+ Debug::init();
+ }
+
+ require_once __DIR__ . '/integration/class-webfinger.php';
+ Integration\Webfinger::init();
+
+ require_once __DIR__ . '/integration/class-nodeinfo.php';
+ Integration\Nodeinfo::init();
+}
+\add_action( 'plugins_loaded', __NAMESPACE__ . '\plugin_init' );
+
+/**
+ * Class Autoloader
+ */
+\spl_autoload_register(
+ function ( $full_class ) {
+ $base_dir = __DIR__ . '/includes/';
+ $base = 'Activitypub\\';
+
+ if ( strncmp( $full_class, $base, strlen( $base ) ) === 0 ) {
+ $maybe_uppercase = str_replace( $base, '', $full_class );
+ $class = strtolower( $maybe_uppercase );
+ // All classes should be capitalized. If this is instead looking for a lowercase method, we ignore that.
+ if ( $maybe_uppercase === $class ) {
+ return;
+ }
+
+ if ( false !== strpos( $class, '\\' ) ) {
+ $parts = explode( '\\', $class );
+ $class = array_pop( $parts );
+ $sub_dir = implode( '/', $parts );
+ $base_dir = $base_dir . $sub_dir . '/';
+ }
+
+ $filename = 'class-' . strtr( $class, '_', '-' );
+ $file = $base_dir . $filename . '.php';
+
+ if ( file_exists( $file ) && is_readable( $file ) ) {
+ require_once $file;
+ } else {
+ // translators: %s is the class name
+ \wp_die( sprintf( esc_html__( 'Required class not found or not readable: %s', 'activitypub' ), esc_html( $full_class ) ) );
+ }
+ }
+ }
+);
+
+/**
+ * Add plugin settings link
+ */
+function plugin_settings_link( $actions ) {
+ $settings_link = array();
+ $settings_link[] = \sprintf(
+ '%2s ',
+ \menu_page_url( 'activitypub', false ),
+ \__( 'Settings', 'activitypub' )
+ );
+
+ return \array_merge( $settings_link, $actions );
+}
+\add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), __NAMESPACE__ . '\plugin_settings_link' );
+
+\register_activation_hook(
+ __FILE__,
+ array(
+ __NAMESPACE__ . '\Activitypub',
+ 'activate',
+ )
+);
+
+\register_deactivation_hook(
+ __FILE__,
+ array(
+ __NAMESPACE__ . '\Activitypub',
+ 'deactivate',
+ )
+);
+
+\register_uninstall_hook(
+ __FILE__,
+ array(
+ __NAMESPACE__ . '\Activitypub',
+ 'uninstall',
+ )
+);
+
+/**
+ * Only load code that needs BuddyPress to run once BP is loaded and initialized.
+ */
+add_action(
+ 'bp_include',
+ function() {
+ require_once __DIR__ . '/integration/class-buddypress.php';
+ Integration\Buddypress::init();
+ },
+ 0
+);
+
+/**
+ * `get_plugin_data` wrapper
+ *
+ * @return array The plugin metadata array
+ */
+function get_plugin_meta( $default_headers = array() ) {
+ if ( ! $default_headers ) {
+ $default_headers = array(
+ 'Name' => 'Plugin Name',
+ 'PluginURI' => 'Plugin URI',
+ 'Version' => 'Version',
+ 'Description' => 'Description',
+ 'Author' => 'Author',
+ 'AuthorURI' => 'Author URI',
+ 'TextDomain' => 'Text Domain',
+ 'DomainPath' => 'Domain Path',
+ 'Network' => 'Network',
+ 'RequiresWP' => 'Requires at least',
+ 'RequiresPHP' => 'Requires PHP',
+ 'UpdateURI' => 'Update URI',
+ );
+ }
+
+ return \get_file_data( __FILE__, $default_headers, 'plugin' );
+}
+
+/**
+ * Plugin Version Number used for caching.
+ */
+function get_plugin_version() {
+ $meta = get_plugin_meta( array( 'Version' => 'Version' ) );
+
+ return $meta['Version'];
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-admin.css b/wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-admin.css
new file mode 100644
index 00000000..07aadcad
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-admin.css
@@ -0,0 +1,199 @@
+.activitypub-settings {
+ max-width: 800px;
+ margin: 0 auto;
+}
+
+.settings_page_activitypub .notice {
+ max-width: 800px;
+ margin: auto;
+ margin: 0px auto 30px;
+}
+
+.settings_page_activitypub .wrap {
+ padding-left: 22px;
+}
+
+.activitypub-settings-header {
+ text-align: center;
+ margin: 0 0 1rem;
+ background: #fff;
+ border-bottom: 1px solid #dcdcde;
+}
+
+.activitypub-settings-title-section {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ clear: both;
+ padding-top: 8px;
+}
+
+.settings_page_activitypub #wpcontent {
+ padding-left: 0;
+}
+
+.activitypub-settings-tabs-wrapper {
+ display: -ms-inline-grid;
+ -ms-grid-columns: auto auto auto;
+ vertical-align: top;
+ display: inline-grid;
+ grid-template-columns: auto auto auto;
+}
+
+.activitypub-settings-tab.active {
+ box-shadow: inset 0 -3px #3582c4;
+ font-weight: 600;
+}
+
+.activitypub-settings-tab {
+ display: block;
+ text-decoration: none;
+ color: inherit;
+ padding: .5rem 1rem 1rem;
+ margin: 0 1rem;
+ transition: box-shadow .5s ease-in-out;
+}
+
+.wp-header-end {
+ visibility: hidden;
+ margin: -2px 0 0;
+}
+
+summary {
+ cursor: pointer;
+ text-decoration: underline;
+ color: #2271b1;
+}
+
+.activitypub-settings-accordion {
+ border: 1px solid #c3c4c7;
+}
+
+.activitypub-settings-accordion-heading {
+ margin: 0;
+ border-top: 1px solid #c3c4c7;
+ font-size: inherit;
+ line-height: inherit;
+ font-weight: 600;
+ color: inherit;
+}
+
+.activitypub-settings-accordion-heading:first-child {
+ border-top: none;
+}
+
+.activitypub-settings-accordion-panel {
+ margin: 0;
+ padding: 1em 1.5em;
+ background: #fff;
+}
+
+.activitypub-settings-accordion-trigger {
+ background: #fff;
+ border: 0;
+ color: #2c3338;
+ cursor: pointer;
+ display: flex;
+ font-weight: 400;
+ margin: 0;
+ padding: 1em 3.5em 1em 1.5em;
+ min-height: 46px;
+ position: relative;
+ text-align: left;
+ width: 100%;
+ align-items: center;
+ justify-content: space-between;
+ -webkit-user-select: auto;
+ user-select: auto;
+}
+
+.activitypub-settings-accordion-trigger {
+ color: #2c3338;
+ cursor: pointer;
+ font-weight: 400;
+ text-align: left;
+}
+
+.activitypub-settings-accordion-trigger .title {
+ pointer-events: none;
+ font-weight: 600;
+ flex-grow: 1;
+}
+
+.activitypub-settings-accordion-trigger .icon,
+.activitypub-settings-accordion-viewed .icon {
+ border: solid #50575e medium;
+ border-width: 0 2px 2px 0;
+ height: .5rem;
+ pointer-events: none;
+ position: absolute;
+ right: 1.5em;
+ top: 50%;
+ transform: translateY(-70%) rotate(45deg);
+ width: .5rem;
+}
+
+.activitypub-settings-accordion-trigger[aria-expanded="true"] .icon {
+ transform: translateY(-30%) rotate(-135deg);
+}
+
+.activitypub-settings-accordion-trigger:active,
+.activitypub-settings-accordion-trigger:hover {
+ background: #f6f7f7;
+}
+
+.activitypub-settings-accordion-trigger:focus {
+ color: #1d2327;
+ border: none;
+ box-shadow: none;
+ outline-offset: -1px;
+ outline: 2px solid #2271b1;
+ background-color: #f6f7f7;
+}
+
+.activitypub-settings
+input.blog-user-identifier {
+ text-align: right;
+}
+
+.activitypub-settings
+.header-image {
+ width: 100%;
+ height: 80px;
+ position: relative;
+ display: block;
+ margin-bottom: 40px;
+ background-image: rgb(168,165,175);
+ background-image: linear-gradient(180deg, red, yellow);
+ background-size: cover;
+}
+
+.activitypub-settings
+.logo {
+ height: 80px;
+ width: 80px;
+ position: relative;
+ top: 40px;
+ left: 40px;
+}
+
+.settings_page_activitypub .box {
+ border: 1px solid #c3c4c7;
+ background-color: #fff;
+ padding: 1em 1.5em;
+ margin-bottom: 1.5em;
+}
+
+.settings_page_activitypub .activitypub-welcome-page .box label {
+ font-weight: bold;
+}
+
+.settings_page_activitypub .activitypub-welcome-page input {
+ font-size: 20px;
+ width: 95%;
+}
+
+.settings_page_activitypub .plugin-recommendations {
+ border-bottom: none;
+ margin-bottom: 0;
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/img/mp.jpg b/wp-content/upgrade-temp-backup/plugins/activitypub/assets/img/mp.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..05964b499d8e34c2bff132bc97a1fbc80bbff93b
GIT binary patch
literal 3337
zcmd6pdpy)x8^C`*Gh@cM4l^j%s92Iq?zaicMBBRL(h`=J!Yo4W%#=1;BaxI_QBq_>
zF-4`+%up#i?h}Q^CHK}um@#JFvG2BT+wRux``7#Y&ht6v_xYXYe4g)fp7Wd^|2h8^
zAm!xX=m3Bq2z)De06q_}uyeDwad&nzSKS|^6LuhYziOQRRy|eC*qG3W{i=>mI8`SX
zdz@;VvB4KxRHI@8z6(8=sA{EZribLe0PFyWkkDEa2vpEu2p9|sg(2Z^VT2e`OiUCh
zDk?4^EhR32k`NV@l9fWqpfMPXn53M%ELvU~jX|$10zw2fP?!h|CW00h6-WPL;XeRS
z2oL}P2&e`Kp+E=<b=?(fe!ZNM_aJ4A3!QoRE5$d)#9%9@&<~D8%j7}3l%F4;FTfb?uhUOPqhDOFF
zre@}LU)nq1b~rlicK7h~+VhR~zk-7I?GFhJi#Zq@7oU)rbmaS^=|3DhPRco*d**Cj
zenDaBrLxOc$}6r`*4B}4-l}i7eTPD&HMcx^{G_$BtGlO{@w~5}IXp5t_Ii9`a*FkK
ze&OBX(lVQ~#7MH07#@5srskW@%vc
zW%*b!y%3P>Y7e0QiMoIqkkfueuS(Kw&RWdw+eU9wDvDZeS|$*3!Nl&m3=gxUVUMGq)s?F&Mq*2j7Fw5H>uu$vJi2&nY}=c1
zPGI9Wtr*hHHTK43%^DvmA=`=oM6v}@H))Av3lTyl!j~L;gRf;)s!qj!^S<_%pJXGYdk+&Yi@Ek8OQnaqfu(_JpmMTLwxN;Ye%&7vIve^SZ~nzyq*U^(%c_&zHaOzG6&W-=aUGzg;$@lmux0
ziH`C%hfqD{o^@8f#ybyfSX40KQ>A2g+6PKd=?HNB6D`ndaiyPQ=Y%Ps^(wr*y`*?k5
zpRzJy+E{{_sOiXv
zeDHqGjk`Nnw3BmJPCL}Sv)tT4y>raGDga6+UWNZG)%?R66ARNeJeG}nox&cLAI
zK?iICF=oob>yis-kN!w84^tdjm6LJw%YBZ#BCTPs-Mp*LkylsY%CbB$c##!_adY$n>#stu37FYv&;@2C=QBWE+nJX+NvG&UPX0p7ndd3ft$;ATEGd$;+J8BvtGrLN0%Z&+|-L=tRZPOXeS5Rw78%)O
z8C{Qn?xZ6xlY6{5Dl}!qTGpn5`o^q{sZZq6?WV*N@<^82@l5>C=2wwNZDT(*J>;VB2#U|n
z23mFl*L_jFopjqCNLd}O5q-Jr<7zw~%!~-gmrx?o;xQTib_u7cy}V7GqvUhIqx{j9
zufm^`=B%7|mF#FL{AtX1mrQuT^aSq41>~P!d%lu~Q!My^i1IzO!58>FP01#AP7WP^
zz@31!TgxrGhbF}@o}mQ3nIvqd=4RE8Gu~EDWdj!g0CEVX^V!6~P`EC06+MO{SADKT
z%zBL@%@S64zC`mkR}o?eRjCBkUy8lmNR0#^pqSO{6btk0^&h0pl-IwC#%hgMygy*S
z^)+G3{ulW`a6)W^Qj`^Q-dXW`9*RpJ@xxsV&Ac`(8@H1W=#(LM%-o}o6>_vRbL4YO
zyR}r2mF9ps5=i|p%AXi3#y5*gu6R+a4rCO}&vc9$7QR(XmB9X?7Vi6y3R(PC!AYgW2vzs`@mdE&bxgxKjG
zDp&o+3O0STLH%{Z`D50V0OZ|(@8>VL_kS*!QLNm;P~CJKgQQolA0D}s#|N%?y{+-9
zRv8}4>bEpedZ1#|IOVwDhQL<$1FTlf(nH7(R8V{#$~Fbf73V4I=R-@D7;UTg=*r0h
zt3_XtGkA%V47MgF>~|I)TK{28W!U-RsUbOl7b`>0xkjo06>zK5>o*HAU-c40C13>r&$z1mjCV?RU}0K)f4!~006^-
zw3x7}+sb*Cd#270_u)gPKUM3EjTV1?q5tt~37p3~fm{ioTcKU}VNG@FLV7moy?F#K}zGn>wb5{twnApX^O1enej
z2Zmw(uS+VdH9a0X>s^K$WScg)9_LR>s@wODCqBI0o?|bxZ?ZfweQzhkb=#}X2Qo16
z1x>*4h6lda2QXBd3lCN8nBKNluZooPI5$fX)ko^4~wz%rgXkes^b}xS>QIdVrVU2&+Wg8+H8+W?N~W%WxGvjcc0!ttBxOZHQ5|>fuWD>jM*42HJa6n$Y~A(#tl4j+?tflw#!YHx^LR~P;e`K
z_nlmFnvzL38{7Ya&)fBH*s`$r|D2pj6Lh;f4KfjFJ?z5EcKLX&c5A(kDW^=juLiSi
zFq5BRxy`oDy7$*Pay|@T)9?zlRb4JSo+mk533OMvEL|NiZPs6@BQp@a@8BYES6MdM
zuBSOqc0R0FdQ}|LHKQ&?xfOr?$g>DCbo1&I+Bu@rUgg%Kw|rZ5Xz;PJG3wBA71Qh
zXWo|V+1*h<^%20?ys-5+6{g%@ZxNQqBG>r-!MD4BVI3(9-rrvgSc<3l$C#^gGD#P`
zlrs9KOsMxXXr&LSbCX~-d&c=76Z+?L96@7<17IwP_}IOX>OIc3RS)*Z+Zoa?Dk%DY
zU+>Z=G^H77=={^WcAn=83%NEo2AA!IDrOODRS-`$KL3;X5*_PTny-fNVt@5K(6
znl@s(%73%?-RAt1o)f4t%(&~FZ*}G}ixK3byC!j%kw>)qeFUIjwS$P#pm^6~_o&He
zvsv7@;-`-w|F&YA-USZbT@`d2%#89}_fhWeZ5Nv3ug{I#72ip=Ia==5`!$0BK?gZX
zWiML*#ceB08c}#n7x5zKtA|q%4j~wCF#Y!jKQzNPIAk7M51hD3)r&H#00%=ksz`&i>%ku$lJn4QG9Vy7?7
zv|dj+W7_B@k}N$18>ZwL76GwsM!kV1+CngpP4r0E1@KCE1Py288KfbNshN!9Wj80B
zuCW!V;A`Zrl6JJT*)4K_LO|SI8>*r>Q#yt`^v9Gb`${UK#g2^~3A+9M&*lAnwrqyG
z6kBH8`-G?i#0q;^hr})guV0HY6v>kULU4oOT8is=KD)*Z_pmLC@MNmy5HGf3j;5)N
zn=E8C^f#CFVA1%8lVX$=u;(REXoitvum$kN9_)O$0YrCS$?Qgok
z`E+aY;lF5;^JlwO#UXRADHXzvw*QOJSen;%B3%I#bZs?(r}@iV$DpV;q8)me5JgMO
z4CmDjkBDPG9~~bH37sLWweK-YQ;`cG`+{Q{Ny7rP8ZB
z3PE{*3H6cx2o|q6_MgnXl2(>5Z%qpqaOpaZz^eIgF-J?d0MeB>ro)87_&1Q?`uR?y
zmukP9rdIqqta4=hdcM~FLD$S!$z$JUG&^wwFxg!$aCN7d+~oG|l!Qcz1iRO|em|MIp{Tl6mAi^{PxJK=Wq
zx{R4%PuVa7U0tbp+eE>%?X-X6fXMzRP-Yvzj_$lhG3AnLu5cOXq6D?YHQu3z=@_lA
zm+^{dEt8SiLhhWmL*S
zS?8W2U@azSypI`bDu}cj8*LG-$uF(lnZh3w9ei!srn4K80OF{1$-!_`k%0<>9#Tlr@)LT@g
zEEj@_$#9)OLN$Acxa)u)#8mh^>Cv{>Xs-Ibhzt59!X4@F{*ZOEgWP}y#}{otmhA@!
zMSSp|`iMw9o<22zval%^EsfgY_gVEa6=OtjGXMw}t<)8Cyuf*W;-T?Kmi4v6+7wUb0-t5;Rd6>8fiBcaedaMB^3d7Oh*~^0iCXwG2P+Kp<
z7AZ&)n}qI>BQ|R>&+4A!Zh5^5r?*gXcwYu3J};ox>g
zv9N6Vzr5jZg^O$6)yH~6K=9nR5Zn?aB&kUoB&$&U9!WH1qyqlzbZ)Mmftd~W9%Qo_
z&cvEs;-NO!(tDBPw|B6C)^z6vVBIn;cIBs_)8{ajZgdGOyxwZ-Asp7M#!q5GqvXb(
z2|rJBgM>0fb9nziFLY@kQsbuF@v?0ip>x+}f047uSkQol=_QdW?h)@rrJgH$lwR
z#);Lf<~&C4IgbPG4+d(=WRY@y)bc7ry(wL74LSsX%1YK`1^T(BUKx8ACx#_Gt!E)`
z1oW^_Pwi)cxv-OY2qkJ|Mp*LPe~9|DvCNbCn3dDsgE(C!mUe)S3PGSAxAyYDmbBH$
znAr-2Inm(ne#rVw^-|%$+%x=#z|1b|#5f`-E0qiSeXoo~QaN;2eSbvhj;{Q3C!|Yi
z^<)ftKTY6R9>vd2Q?QW$(Gz}?TKd=^--+5!d3^PcxI&kQjYT$rit&zU+nHrEQJVZ6
z(x!At%umY9fw=^s$EQLla;15`q0So~l>XhF1B*6k^%~$%eQ9e1Erx>I;+&o0Wjvp>Zg{E
z-&rT~gGCi|%g3h;5oWqsc>&Yi4x9E1kQpa5Lu6vM-^r^sJ3E@X@Bu#2QNg+Q{1gdn
zq?Jlj14&Pi7ZrLSyNg{qaej`Z`?Hn9IZLt_43n~a0$=9Zq}{%
zesapwjh>rf2Ynm{$0dFgg{0Et53e+qG{Q5no(1Y|fSACoR9<>B281N$Ur^fLl-6L-
zQhW1f*Oo>9h2~$?mZ)9d_te3dbAR?8KH11_yPH>Jv^w4*EwuZXW+FEg%tvyj5y;|+5_dDDLo@I%{}qeR&gIv&kr1lt#;~@AXOS+U*OOfZ
z`n#HoR!oslSB1WpS0*r>jU{0#ALhX~#f?%AO3M`PI*0^qUOub<5GN4SDYcKcgJx_G
z=)6@?-5D`6F94~a+U$=)B2yNbsuP}IWOzRQf{g33_sj@Tw4b+3aPX^HUnrJSMgPJ3
z*FEJ(9%{Pr@Xm{e#1UJv5?ceOkYq>@s<6rbAnb0VI$nonv~Rd-#SN0~uMO=&sH;SLPUd&ww79d)^ylaa?!)h
zZ|QVQ-%RY{LZU@
zBIOoCqdwJLvs(#3tX5!0yZ=$kmI($44T_rc?;sDU|0pH3^O)9lFv~N%&zGSRbx{(+?Fqa!fVJ~@;dOi$gyYu$c`Ui+-!VV2T*N#>=!4S4;Y+}
zp${OT&T}hIg+9}R=C|Hp#hhM%IL3Wu6f{ik3;FT*GZ4AO_A6srC4`AvE%{`J!Dk6x
zNja7$Rfn|_p_B?nezP@s)wSJj--n;M0qh(y%xnwnZ$)Hjw1^=5R&9rcffz`FtqfPj
zg!abdpjVns>Kz=}dj;4vsSor3Qp4^05-3aNztRVX0EAP)2|egyknEJ(+Z$3qzoa9=
z3dOsZoBpGW^h9&5-mr|Js_szS!Do*>Ci~V%;f=pF_X_0R6x88gd`d7Zx9CJz2{QNi
z^asQ*j6c|FN$u?3aD2@PW<5DkLesXSp(}!w@(TJ=%s@TnnwP*ymO3z0nnG(H8AS&D
zp&TtMLcM>hCthW^xOR&C_~y)={;$`VRFU)T$Er*Mz0(QrYMyolOzloPs#fiMQAr0K
zI!?rZ{`h!0+BQTOQ@P`1yuo;M)sfH|tI>W4Cl%r1l^NX|g2a`SBlh#{lz)s<5cJ{x
z?`LmRYM9R2hrlsty(@(mxUg?Cx{*6U36UP;+7lqVjh+n9>u<|J8Qt#W%wqnU7VSRX
zwH<2YY~h1iy!A(Dtrett9sHfA7n
zXYHKP%Afj~4xDP7-CRwbFP9(hF`OE}sZ~sgxy4wjpDfqDnhxnrJ=%RDXF4$y(mBZtWwEiVZ)3(z4qD-KV3&D4TqfB
zP8fPrK2Wi-Cogh#1c(o=raA>WJGNz1G|R}(GOkT&TA{O>q!S-?Wt={HuH^#S`~B(f;`
zyu4D^Dj7cZY(lu4^KbFOJj`pZi@A3SS5a(I2wPC@f7|SU7oeZ6l$aJU=KTwsetZmg
zVP>V~>K9$)zfa02p6~XZkWI3A=!Y6Ma?})J^;|DWPqtbye+HMNAK_rw3DEc_K~0&e
z9Z}B|r9Y`7Z#yhmrznbkd3pvik_0V)@9g-dr2BpPn_lRAQydn0_VP)lf
zfy$QuhT(IN#&VcJH%$@d@p^$me|~%^k(-Bd*S*!Zf3yXN5DKh=&qc1%U|baIVsw!<
zCUDreTQ{f;L!Cr->}n0jn&NZx@HLbwXoSq1D;HAf*3W4nHg?(8lpW
zC*rjL#v|oFC|7;0mxkGG@gHMRSSJSpp9bckB$#Vhl?RNb8_}|g`CrNxAPE5Lj&8<5
zj128^9qeQsmT!h+y!JOjzj>*`Wr09qq8e~&yWA~`M5XS_uU2u3beBCx7)fDt2)tu2
zzM&$lVq&ZSvzWJ|4Tv~Ta7h>xb>VBZ&v6?yFZ?-L1_{TsF*J`!ouPx^rcj5b4;OVY
z|HemKS;*la6YxZoPa2Mo8-U?K^=arY+kei5Myqk#3s
zV@DoQ3}5KD8K?bax&I3;zQc)XPKSxj?w}yXcS_@;MI}DCE>aq!?kEG16kY@LZv;a6
zL7WD8fkuYNk@B-KW3DNCUq8?ty0iu7wdNo<@00!Cf4w?~lvS2FWeU*k0T3E*pNm3J
z!hZRrm6$76nvXn{803sydo|=WrWK+h!0r`vnQe8Pc5iU&4nUyC+mIou{~=9%%(ra$
z5oM&MuWlXn`2e-Xo{KVPeXT~iNJ=`w4g$=LdQgI%IL1<`UqT)7RJRREMserKAV)OT
z$DUVLuZPha>t8fl5k39!+_Al?ul&h@P}Jx-5=vNF>J&M}#;}5>K<1q`$n-uv;zk8*
z!x*k5S`C4|B{)87J+d>wU|ju(r2+opaJM31ZH0vEvp*|nLxLFXpL1Fstt2EwsMtMv
zB7O2Gm4h8$?k??5vtzi(a>cL5=`B;2*v~my&k{0sbG}V-?cSkXDc(WXdkwgKy&dyi
zs~hnwU+9HE*D>2I{!%)z)B9{@etg1lkN2T^#{GP2EnAZ(whi&2x-fel;z1VdYa3$*
z1acee$=S{YG!c0$6ob3u&S)N{Z|@;S~zWUWbH0gAejO+6JPeDHh4Mjfd`Y`18NEvI!CsD@LiP-6Vpl;PEi
z|Gtxx{-&is(UCvV%$38(-%0gVrs;2KSKeXKWZFR^E03QFyz#F=DPu4M1nOi;va9SF
z+L-AG|L683XZe}6-DjaT_v{h@58XpUuooCb0vmX&VUarls;!iLUq(5U_8q11FNQ2%
z{M1%ZS16JUZo+*TrIl!NE4n{~mM6K$zI`V_P0HXTWMgjJy=dLQMHKHtsFEf4I{#&ZC`wc5E?2D7gAM9>aS|Cv#3q@_b
zsF;RuYjiF1NIdd#!+;pw3O;t&h*tCW-=BpG>5CQPn1{ynY1vxm5ax-WO@
zM*msfu*5nLtDH#t!p~7Ui?RB=RwB(@PrgcGi|p~Gb4h9aQV*l|mA7cV5Z8TaUTmdf
z>XkpbTkqrc+vs9hFbV>MOTcIdLgnB?_otwLECr1W$HsqF&8g>JY%V(t`!&`Jl|T3u
z#NBZr3AqYKcR4P*oRaqostrU~Cx)M7*zx4e8AGCdtwfCC5Wks`GoCkDbw1y1rl&t?
zdLM5li7#1I*3u1p_i0Uxg#t`DQUHC1g)Hus5UrKMwH-`vCGwtz1;jAZbE(EB9lDCt
zJ25DZ=}%vaL4d+KgvBXrCNMP-P${D3?;GAMz}8^yZg8!0fYE;D+9|>p4vS%PJ1|9d
zl+5eeWRm)*lM;aMU7^%nsqBeuqOeafx8UFa=p-;P3iXm0R}Y{MU?KTApl+j0jr#G{
zM3i&>O_=C_Hn0MA?|P>y1d_~KsA18!~WcPb~SForw?^(6A}UXecwU$
z&_8oAA#@Or{$ckO-D5P0>~P~SLl-?s!19yn
zos(%D4UxARB?4rc*i=0@~?4Ea&0Mgjdr!ZOi8rkZ`=UA^f>RX?>cD>gN
zn%;5WkgD`Jbyw*mXB4M-QzW-vKzOacL}+@V5+)V#9RgbW-f0YROwyC2dG-<$;2TSd;Q;s7^f@#K@KIqnM|AedI1>xL8&bT~PJ^4r)Qwh+7Lk@y-JwE&W=
zSvP0Yt}ArxW)`o9E3`ij4~FEP!Kg+Be+lAlAZMlYnqupo9KT1Wa&1)0vAyt#YWIih
z$Ozez>{H=mssbFBee6hG9k_s5ONilnD%8;!k%S&TffdQmp!njU$+JNMm7Sa@x1R-4
z$vM#te48`ECJ;R8Rt`MI2{ExDFV)PzEhF{4-EOXhzxHKuXCc1``%ySeKCToZzBU=F
zg>mn&qPjzm(+hTvtlR(nk+H7?uSlA%Xi
zvQJuu1eY;Lf3nFh=?OOQq-V35IiUnSSk@qd)yR8N55}GUE&Sy1A0I{K@BV3|5=9@_*{Z3j+cH@(oavY%
z?`b0Y4@%?rC8D37;U)>=2PGsm#vUz(kU8O+LT)8D)CmwH_?7wDw)c8sNN?
zLL{8*=cNd*U)@HjN&_^GBJB@^)LBq>^E;Vo#?xJ`RQO3+Nk*9&)%XL)*OMbc6e7k*
zo)*7@JWn+QcE_cC<(}-#OkTLs^EeI9+9Cp!*~^%LxthmgHtKb|>m;zm(Hpe-<}Nx=B}RO#(geTT~TRS4XQo+#dWRKBEN
z`OJjQQ_#pQvO!Wq6_MIB*OQ+jeY_*UB$8qewY=diiG>}Y{`|&XV!=*|W>vdQkZUbk
zqq0s#yljHnjH&_qC5U^#zI;m^C?CiIo<=n2U4**r8z)mWeWvL|N47x>z8CcFXfaTN
zqsxHMU+^0w5(buPtP8%Q(#4cC1T?{rOAVQ?JjM!<)3}{jk8h3Fw{4~Dmk=jbFm2i{
zZw&y32nuN61StDa$aVmFM;Hh{aT{s0f1kYKiRm=dE5woDghtTugGu@mT>ukHj1cZY
zGRca&G{?w<8gb#^^F!pH{%tk0LmR>PI%5#b6J}W&J;mP9IY#8gRoN+;3_`35-f>(+
z@k-GPmc1g82;oY}iWFqW$X!{&Hz+&!cnEBEwqqos>~!oH3`YR(KaC+#Nv;@(aCz~>
zIKUJ|+;sF0l(YR^fJ7C7Am8J)m<}x7Pd9|#c;#yaCN|ZDFjL-rm$F=_sYZ1P1)OdF
zoQ<0Oz4y8Jmd3&|t^jqjh+BIA9~NsxDp>&>?FHaN7qp1d
zAe3vZGopc0o=7XqnvFi*iK0LK4}UsUhIywQPHZ7FAC=Vud`7lhk>vN6(IARvZokkGPMih`de`~nb%cX7m|Z2%;_px>rMiXb
zh6lfYXH&P|_Y_s4q_}*6TP!rwMDwzV)sie6W(5=KAEVN#g|P^GU)MSIZ{GktrHT3)
z4-YM9H?K0{JCB8q&PLX1)89!5x42V$^Gxq#9NOS%dPlar
zpX>=|NnaRd&I*16Q9Gn8l)*a$(@xw>cpNdUJkZX31`vlfW%}2tE;QG>AK-rw<1>k&
z%eSEj4DgwD-N&Ng8**)9Wj>V;Vxms`&3!fypea|B+e#{^-74{}DMa3dM|^C?2eZ)`
zQl$ErCOy(y&eu?oHOlLGg)HT)ShKLqV)JMAAx(l_HJh{?-(66Q_b+an!pQQ{)T{&P
z6)5hTJ~U*Rwoc8S%25S@TkqKsTmXbq~C@NrR&)SaKGP9MS6
zCx(M2xG?C_kfo5@pYByALP~7x?*?~TxloraU({0DvgPY>8#e5YD7BDJcBWM!mxSAZ^vg{8nbq)t?7
zM}^T|SzRt`$TI8v_wyJ<1v1jDVTgVRe)f-{t$#+X6tL$LX_{_k>f2N}_fDYlT%-2?
z-g7BvveK4t<^%5@)SqC=m$vMj-XscE#*!@DwOod`{s}yio!Tj?-WjkOe1Fd+_zEw1
zwP3e$DpEhZVR@FRcLO)8PC3)tQ*c%v(hH4V(&-R^8hSAfuefd6-U`0FI-_?wNd{#y;~;0Nnder1VEwOEhZUL
zVKiJKtA4R_@CarPei@oUX`|o1K&FUQs?rg+@lI*K!JThPe@Rpixtbhu@{2&8`vyFU
zUw#aKMS@)*kD+zqVe|RnhB|%>NRC>gQQP(|>zK!~NxiiH#VS~aJazREG}eW?0HJaN
zku6HdyOab&W3p(4-V)Lf;Z2SosC~t;S0{G^hY=-!oaNbJA;U2kNHS7KA|3^bQ^PVK
z+C1fW7o#mUl=8jy6QqZP+?u%npWVQ1;;n)|K`?rp%yOh8^?xIY8m%IJHqK{&-(aDC
zR9t`C3F(pFIMKt(hnb!(H=<>-^a8z#D8H2G`?3xEyq%37Izctr!KMc(g)=G22oaD;FmRn|-ukEPMH_1-
zpIB{3=wuXL|IKt2u<{BVgrMb%o$>rvkeu)QGtM!hNN8ZJDQFM%1q4Zfy;c6KiIScS
zJeX1fDY3MjUdn6{eJp#+^3%FjKYZ$|i;+;Z5(pz?%wCy6{zVIGtgQ+^CcYj^HmVkiZ9Y|ioWk7H(Ni#&e%J7dh)h=@ZNXQ
z$ziCFp%Cwij6k5;{fbkDGjkN+5#I=37Av%9^v=fAK;4`XiSW~cb|gCLtpOG?WDCw^
zb|;G!rq~m-mD+S`xkRzn)!vxL7f;+_2-*;<0s(t(m~e%QVGu@^jj0z9!p
zqMaYDr-!K9C~0tIQd6ddu^D$TF+^T(jy~lfSDW3+bqAgW^&_wKXCkr|7*oowAa^>>b!Na086ovYrDIR)L!J6
z8(6)k!Fss{{$pLXV!uK&V%m!~l%4!`qDv@CkDdA|6}9-Wene)Dwv3z9X2cB@3Nn>C
zY_J-77i^Rk!-AbhXDmQC$VxL^UZC>DPc9XysY=oQwu4G7LAy{^mSkUz-ci%ZuTsLs
zB1xUp)8q@SqH#84LDuU**I1$L3ld2n72c?D5j(Gt0;l7TSfogXL`FGJ2CFbg-9HdJ
zfR0i0Am!22D&+F=hHOvGX$Ul=uz^n?ay9PQ=O_Xb5F5$$u<+Vdq6-?
z8PWPGri^7u{59UfLO$4vSb-e2cv_IsNN_9$r#;;&R#-=UV)O_QZFN@is_XvSr80Dj
zCh1fUI8`E~oWzO0zFC{gZgFL$mhTRUH)Sq`A6My#^8Nc=A)Y+vw~=7g=-Jw(n9@sE=Fg)f&
zh3>D&g}X_jpFOM)z9vXkY89k75KGahtydvX<2>kxlOaovZ9}ZS9bW!<(
zALY^8$uA1_@5M{msarBpdIT=DmvX0g6|PF>kjghzWj`u~&FBIh4~xpfAMW8io0PaGT|Ev_I|Eut6jKi!|^*#H0l
literal 0
HcmV?d00001
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-admin.js b/wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-admin.js
new file mode 100644
index 00000000..f6a75afe
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-admin.js
@@ -0,0 +1,20 @@
+jQuery( function( $ ) {
+ // Accordion handling in various areas.
+ $( '.activitypub-settings-accordion' ).on( 'click', '.activitypub-settings-accordion-trigger', function() {
+ var isExpanded = ( 'true' === $( this ).attr( 'aria-expanded' ) );
+
+ if ( isExpanded ) {
+ $( this ).attr( 'aria-expanded', 'false' );
+ $( '#' + $( this ).attr( 'aria-controls' ) ).attr( 'hidden', true );
+ } else {
+ $( this ).attr( 'aria-expanded', 'true' );
+ $( '#' + $( this ).attr( 'aria-controls' ) ).attr( 'hidden', false );
+ }
+ } );
+
+ $(document).on( 'wp-plugin-install-success', function( event, response ) {
+ setTimeout( function() {
+ $( '.activate-now' ).removeClass( 'thickbox open-plugin-details-modal' );
+ }, 1200 );
+ } );
+} );
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/block.json b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/block.json
new file mode 100644
index 00000000..8dcb824d
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/block.json
@@ -0,0 +1,47 @@
+{
+ "$schema": "https://schemas.wp.org/trunk/block.json",
+ "name": "activitypub/follow-me",
+ "apiVersion": 3,
+ "version": "1.0.0",
+ "title": "Follow me on the Fediverse",
+ "category": "widgets",
+ "description": "Display your Fediverse profile so that visitors can follow you.",
+ "textdomain": "activitypub",
+ "icon": "groups",
+ "supports": {
+ "html": false,
+ "color": {
+ "gradients": true,
+ "link": true,
+ "__experimentalDefaultControls": {
+ "background": true,
+ "text": true,
+ "link": true
+ }
+ },
+ "__experimentalBorder": {
+ "radius": true,
+ "width": true,
+ "color": true,
+ "style": true
+ },
+ "typography": {
+ "fontSize": true,
+ "__experimentalDefaultControls": {
+ "fontSize": true
+ }
+ }
+ },
+ "attributes": {
+ "selectedUser": {
+ "type": "string",
+ "default": "site"
+ }
+ },
+ "editorScript": "file:./index.js",
+ "viewScript": "file:./view.js",
+ "style": [
+ "file:./style-index.css",
+ "wp-components"
+ ]
+}
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.asset.php
new file mode 100644
index 00000000..760f4336
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.asset.php
@@ -0,0 +1 @@
+ array('wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => '6aeec6336fd28aa836a7');
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.js
new file mode 100644
index 00000000..1320f15d
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,t={843:(e,t,n)=>{const r=window.wp.blocks,o=window.wp.element,l=window.wp.primitives,a=(0,o.createElement)(l.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,o.createElement)(l.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"}));function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:null;return n?`${e}${arguments.length>3&&void 0!==arguments[3]?arguments[3]:""} { ${t}: ${n}; }\n`:""}function E(e,t,n,r){return g(e,"background-color",t)+g(e,"color",n)+g(e,"background-color",r,":hover")+g(e,"background-color",r,":focus")}function k(e){let{selector:t,style:n,backgroundColor:r}=e;const l=function(e,t,n){const r=`${e} .components-button`,o=("string"==typeof(l=n)?h(l):l?.color?.background||null)||t?.color?.background;var l;return E(r,_(t?.elements?.link?.color?.text),o,_(t?.elements?.link?.[":hover"]?.color?.text))}(t,n,r);return(0,o.createElement)("style",null,l)}const{namespace:O}=window._activityPubOptions,x={avatar:"",resource:"@well@hello.dolly",name:(0,s.__)("Hello Dolly Fan Account","activitypub"),url:"#"};function C(e){if(!e)return x;const t={...x,...e};return t.avatar=t?.icon?.url,t}function S(e){let{profile:t,popupStyles:n,userId:r}=e;const{avatar:l,name:a,resource:c}=t;return(0,o.createElement)("div",{className:"activitypub-profile"},(0,o.createElement)("img",{className:"activitypub-profile__avatar",src:l,alt:a}),(0,o.createElement)("div",{className:"activitypub-profile__content"},(0,o.createElement)("div",{className:"activitypub-profile__name"},a),(0,o.createElement)("div",{className:"activitypub-profile__handle",title:c},c)),(0,o.createElement)(N,{profile:t,popupStyles:n,userId:r}))}function N(e){let{profile:t,popupStyles:n,userId:r}=e;const[l,a]=(0,o.useState)(!1),c=(0,s.sprintf)((0,s.__)("Follow %s","activitypub"),t?.name);return(0,o.createElement)(o.Fragment,null,(0,o.createElement)(u.Button,{className:"activitypub-profile__follow",onClick:()=>a(!0)},(0,s.__)("Follow","activitypub")),l&&(0,o.createElement)(u.Modal,{className:"activitypub-profile__confirm",onRequestClose:()=>a(!1),title:c},(0,o.createElement)(P,{profile:t,userId:r}),(0,o.createElement)("style",null,n)))}function $(e){try{return new URL(e),!0}catch(e){return!1}}function P(e){let{profile:t,userId:n}=e;const{resource:r}=t,l=(0,s.__)("Follow","activitypub"),a=(0,s.__)("Loading...","activitypub"),c=(0,s.__)("Opening...","activitypub"),i=(0,s.__)("Error","activitypub"),p=(0,s.__)("Invalid","activitypub"),[m,v]=(0,o.useState)(l),[h,_]=(0,o.useState)(f),g=(0,y.useCopyToClipboard)(r,(()=>{_(w),setTimeout((()=>_(f)),1e3)})),[E,k]=(0,o.useState)(""),x=(0,o.useCallback)((()=>{let e;if(!$(E)&&!function(e){const t=e.replace(/^@/,"").split("@");return 2===t.length&&$(`https://${t[1]}`)}(E))return v(p),e=setTimeout((()=>v(l)),2e3),()=>clearTimeout(e);const t=`/${O}/users/${n}/remote-follow?resource=${E}`;v(a),d()({path:t}).then((e=>{let{url:t}=e;v(c),setTimeout((()=>{window.open(t,"_blank"),v(l)}),200)})).catch((()=>{v(i),setTimeout((()=>v(l)),2e3)}))}),[E]);return(0,o.createElement)("div",{className:"activitypub-follow-me__dialog"},(0,o.createElement)("div",{className:"apmfd__section"},(0,o.createElement)("h4",null,(0,s.__)("My Profile","activitypub")),(0,o.createElement)("div",{className:"apfmd-description"},(0,s.__)("Copy and paste my profile into the search field of your favorite fediverse app or server.","activitypub")),(0,o.createElement)("div",{className:"apfmd__button-group"},(0,o.createElement)("input",{type:"text",value:r,readOnly:!0}),(0,o.createElement)(u.Button,{ref:g},(0,o.createElement)(b,{icon:h}),(0,s.__)("Copy","activitypub")))),(0,o.createElement)("div",{className:"apmfd__section"},(0,o.createElement)("h4",null,(0,s.__)("Your Profile","activitypub")),(0,o.createElement)("div",{className:"apfmd-description"},(0,o.createInterpolateElement)((0,s.__)("Or, if you know your own profile, we can start things that way! (eg https://example.com/yourusername
or yourusername@example.com
)","activitypub"),{code:(0,o.createElement)("code",null)})),(0,o.createElement)("div",{className:"apfmd__button-group"},(0,o.createElement)("input",{type:"text",value:E,onKeyDown:e=>{"Enter"===e?.code&&x()},onChange:e=>k(e.target.value)}),(0,o.createElement)(u.Button,{onClick:x},m))))}function z(e){let{selectedUser:t,style:n,backgroundColor:r,id:l,useId:a=!1,profileData:c=!1}=e;const[i,s]=(0,o.useState)(C()),u="site"===t?0:t,p=function(e){return E(".apfmd__button-group .components-button",_(e?.elements?.link?.color?.text)||"#111","#fff",_(e?.elements?.link?.[":hover"]?.color?.text)||"#333")}(n),m=a?{id:l}:{};function v(e){s(C(e))}return(0,o.useEffect)((()=>{if(c)return v(c);(function(e){const t={headers:{Accept:"application/activity+json"},path:`/${O}/users/${e}`};return d()(t)})(u).then(v)}),[u,c]),(0,o.createElement)("div",m,(0,o.createElement)(k,{selector:`#${l}`,style:n,backgroundColor:r}),(0,o.createElement)(S,{profile:i,userId:u,popupStyles:p}))}(0,r.registerBlockType)("activitypub/follow-me",{edit:function(e){let{attributes:t,setAttributes:n}=e;const r=(0,i.useBlockProps)({className:"activitypub-follow-me-block-wrapper"}),l=function(){const e=m?.users?(0,p.useSelect)((e=>e("core").getUsers({who:"authors"}))):[];return(0,o.useMemo)((()=>{if(!e)return[];const t=m?.site?[{label:(0,s.__)("Whole Site","activitypub"),value:"site"}]:[];return e.reduce(((e,t)=>(e.push({label:t.name,value:`${t.id}`}),e)),t)}),[e])}(),{selectedUser:a}=t;return(0,o.useEffect)((()=>{l.length&&(l.find((e=>{let{value:t}=e;return t===a}))||n({selectedUser:l[0].value}))}),[a,l]),(0,o.createElement)("div",r,l.length>1&&(0,o.createElement)(i.InspectorControls,{key:"setting"},(0,o.createElement)(u.PanelBody,{title:(0,s.__)("Followers Options","activitypub")},(0,o.createElement)(u.SelectControl,{label:(0,s.__)("Select User","activitypub"),value:t.selectedUser,options:l,onChange:e=>n({selectedUser:e})}))),(0,o.createElement)(z,c({},t,{id:r.id})))},save:()=>null,icon:a})}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var l=n[e]={exports:{}};return t[e](l,l.exports,r),l.exports}r.m=t,e=[],r.O=(t,n,o,l)=>{if(!n){var a=1/0;for(u=0;u=l)&&Object.keys(r.O).every((e=>r.O[e](n[i])))?n.splice(i--,1):(c=!1,l0&&e[u-1][2]>l;u--)e[u]=e[u-1];e[u]=[n,o,l]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={127:0,740:0};r.O.j=t=>0===e[t];var t=(t,n)=>{var o,l,[a,c,i]=n,s=0;if(a.some((t=>0!==e[t]))){for(o in c)r.o(c,o)&&(r.m[o]=c[o]);if(i)var u=i(r)}for(t&&t(n);s r(843)));o=r.O(o)})();
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-index.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-index.css
new file mode 100644
index 00000000..7c6db77c
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-index.css
@@ -0,0 +1 @@
+.activitypub-follow-me-block-wrapper{width:100%}.activitypub-follow-me-block-wrapper.has-background .activitypub-profile,.activitypub-follow-me-block-wrapper.has-border-color .activitypub-profile{padding-left:1rem;padding-right:1rem}.activitypub-follow-me-block-wrapper .activitypub-profile{align-items:center;display:flex;padding:1rem 0}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__avatar{border-radius:50%;height:75px;margin-right:1rem;width:75px}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__content{flex:1;min-width:0}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__handle,.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__name{line-height:1.2;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__name{font-size:1.25em}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__follow{align-self:center;background-color:var(--wp--preset--color--black);color:var(--wp--preset--color--white);margin-left:1rem}.activitypub-profile__confirm.components-modal__frame{background-color:#f7f7f7;color:#333}.activitypub-profile__confirm.components-modal__frame .components-modal__header-heading,.activitypub-profile__confirm.components-modal__frame h4{color:#333;letter-spacing:inherit;word-spacing:inherit}.activitypub-follow-me__dialog{max-width:30em}.activitypub-follow-me__dialog h4{line-height:1;margin:0}.activitypub-follow-me__dialog .apmfd__section{margin-bottom:2em}.activitypub-follow-me__dialog .apfmd-description{font-size:var(--wp--preset--font-size--normal,.75rem);margin:.33em 0 1em}.activitypub-follow-me__dialog .apfmd__button-group{align-items:flex-end;display:flex;justify-content:flex-end}.activitypub-follow-me__dialog .apfmd__button-group svg{height:21px;margin-right:.5em;width:21px}.activitypub-follow-me__dialog .apfmd__button-group input{background-color:var(--wp--preset--color--white);border:1px solid var(--wp--preset--color--black);color:var(--wp--preset--color--black);flex:1;padding:6px 12px}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.asset.php
new file mode 100644
index 00000000..76495efb
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.asset.php
@@ -0,0 +1 @@
+ array('wp-api-fetch', 'wp-components', 'wp-compose', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => '5b48281e37700a970a66');
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.js
new file mode 100644
index 00000000..62d6d05a
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,t={810:(e,t,r)=>{function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:null;return r?`${e}${arguments.length>3&&void 0!==arguments[3]?arguments[3]:""} { ${t}: ${r}; }\n`:""}function _(e,t,r,n){return w(e,"background-color",t)+w(e,"color",r)+w(e,"background-color",n,":hover")+w(e,"background-color",n,":focus")}function h(e){let{selector:t,style:r,backgroundColor:n}=e;const l=function(e,t,r){const n=`${e} .components-button`,o=("string"==typeof(l=r)?y(l):l?.color?.background||null)||t?.color?.background;var l;return _(n,b(t?.elements?.link?.color?.text),o,b(t?.elements?.link?.[":hover"]?.color?.text))}(t,r,n);return(0,o.createElement)("style",null,l)}const{namespace:E}=window._activityPubOptions,g={avatar:"",resource:"@well@hello.dolly",name:(0,s.__)("Hello Dolly Fan Account","activitypub"),url:"#"};function k(e){if(!e)return g;const t={...g,...e};return t.avatar=t?.icon?.url,t}function O(e){let{profile:t,popupStyles:r,userId:n}=e;const{avatar:l,name:a,resource:c}=t;return(0,o.createElement)("div",{className:"activitypub-profile"},(0,o.createElement)("img",{className:"activitypub-profile__avatar",src:l,alt:a}),(0,o.createElement)("div",{className:"activitypub-profile__content"},(0,o.createElement)("div",{className:"activitypub-profile__name"},a),(0,o.createElement)("div",{className:"activitypub-profile__handle",title:c},c)),(0,o.createElement)(x,{profile:t,popupStyles:r,userId:n}))}function x(e){let{profile:t,popupStyles:r,userId:n}=e;const[l,a]=(0,o.useState)(!1),c=(0,s.sprintf)((0,s.__)("Follow %s","activitypub"),t?.name);return(0,o.createElement)(o.Fragment,null,(0,o.createElement)(u.Button,{className:"activitypub-profile__follow",onClick:()=>a(!0)},(0,s.__)("Follow","activitypub")),l&&(0,o.createElement)(u.Modal,{className:"activitypub-profile__confirm",onRequestClose:()=>a(!1),title:c},(0,o.createElement)(N,{profile:t,userId:n}),(0,o.createElement)("style",null,r)))}function C(e){try{return new URL(e),!0}catch(e){return!1}}function N(e){let{profile:t,userId:r}=e;const{resource:n}=t,l=(0,s.__)("Follow","activitypub"),a=(0,s.__)("Loading...","activitypub"),c=(0,s.__)("Opening...","activitypub"),p=(0,s.__)("Error","activitypub"),y=(0,s.__)("Invalid","activitypub"),[b,w]=(0,o.useState)(l),[_,h]=(0,o.useState)(m),g=(0,f.useCopyToClipboard)(n,(()=>{h(d),setTimeout((()=>h(m)),1e3)})),[k,O]=(0,o.useState)(""),x=(0,o.useCallback)((()=>{let e;if(!C(k)&&!function(e){const t=e.replace(/^@/,"").split("@");return 2===t.length&&C(`https://${t[1]}`)}(k))return w(y),e=setTimeout((()=>w(l)),2e3),()=>clearTimeout(e);const t=`/${E}/users/${r}/remote-follow?resource=${k}`;w(a),i()({path:t}).then((e=>{let{url:t}=e;w(c),setTimeout((()=>{window.open(t,"_blank"),w(l)}),200)})).catch((()=>{w(p),setTimeout((()=>w(l)),2e3)}))}),[k]);return(0,o.createElement)("div",{className:"activitypub-follow-me__dialog"},(0,o.createElement)("div",{className:"apmfd__section"},(0,o.createElement)("h4",null,(0,s.__)("My Profile","activitypub")),(0,o.createElement)("div",{className:"apfmd-description"},(0,s.__)("Copy and paste my profile into the search field of your favorite fediverse app or server.","activitypub")),(0,o.createElement)("div",{className:"apfmd__button-group"},(0,o.createElement)("input",{type:"text",value:n,readOnly:!0}),(0,o.createElement)(u.Button,{ref:g},(0,o.createElement)(v,{icon:_}),(0,s.__)("Copy","activitypub")))),(0,o.createElement)("div",{className:"apmfd__section"},(0,o.createElement)("h4",null,(0,s.__)("Your Profile","activitypub")),(0,o.createElement)("div",{className:"apfmd-description"},(0,o.createInterpolateElement)((0,s.__)("Or, if you know your own profile, we can start things that way! (eg https://example.com/yourusername
or yourusername@example.com
)","activitypub"),{code:(0,o.createElement)("code",null)})),(0,o.createElement)("div",{className:"apfmd__button-group"},(0,o.createElement)("input",{type:"text",value:k,onKeyDown:e=>{"Enter"===e?.code&&x()},onChange:e=>O(e.target.value)}),(0,o.createElement)(u.Button,{onClick:x},b))))}function S(e){let{selectedUser:t,style:r,backgroundColor:n,id:l,useId:a=!1,profileData:c=!1}=e;const[u,s]=(0,o.useState)(k()),p="site"===t?0:t,m=function(e){return _(".apfmd__button-group .components-button",b(e?.elements?.link?.color?.text)||"#111","#fff",b(e?.elements?.link?.[":hover"]?.color?.text)||"#333")}(r),d=a?{id:l}:{};function v(e){s(k(e))}return(0,o.useEffect)((()=>{if(c)return v(c);(function(e){const t={headers:{Accept:"application/activity+json"},path:`/${E}/users/${e}`};return i()(t)})(p).then(v)}),[p,c]),(0,o.createElement)("div",d,(0,o.createElement)(h,{selector:`#${l}`,style:r,backgroundColor:n}),(0,o.createElement)(O,{profile:u,userId:p,popupStyles:m}))}let $=1;a()((()=>{[].forEach.call(document.querySelectorAll(".activitypub-follow-me-block-wrapper"),(e=>{const t=JSON.parse(e.dataset.attrs);(0,o.render)((0,o.createElement)(S,n({},t,{id:"activitypub-follow-me-block-"+$++,useId:!0})),e)}))}))}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var l=r[e]={exports:{}};return t[e](l,l.exports,n),l.exports}n.m=t,e=[],n.O=(t,r,o,l)=>{if(!r){var a=1/0;for(s=0;s=l)&&Object.keys(n.O).every((e=>n.O[e](r[i])))?r.splice(i--,1):(c=!1,l0&&e[s-1][2]>l;s--)e[s]=e[s-1];e[s]=[r,o,l]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={529:0,740:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var o,l,[a,c,i]=r,u=0;if(a.some((t=>0!==e[t]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);if(i)var s=i(n)}for(t&&t(r);u n(810)));o=n.O(o)})();
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/block.json b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/block.json
new file mode 100644
index 00000000..c7015d33
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/block.json
@@ -0,0 +1,57 @@
+{
+ "$schema": "https://schemas.wp.org/trunk/block.json",
+ "name": "activitypub/followers",
+ "apiVersion": 3,
+ "version": "1.0.0",
+ "title": "Fediverse Followers",
+ "category": "widgets",
+ "description": "Display your followers from the Fediverse on your website.",
+ "textdomain": "activitypub",
+ "icon": "groups",
+ "supports": {
+ "html": false
+ },
+ "attributes": {
+ "title": {
+ "type": "string",
+ "default": "Fediverse Followers"
+ },
+ "selectedUser": {
+ "type": "string",
+ "default": "site"
+ },
+ "per_page": {
+ "type": "number",
+ "default": 10
+ },
+ "order": {
+ "type": "string",
+ "default": "desc",
+ "enum": [
+ "asc",
+ "desc"
+ ]
+ }
+ },
+ "styles": [
+ {
+ "name": "default",
+ "label": "No Lines",
+ "isDefault": true
+ },
+ {
+ "name": "with-lines",
+ "label": "Lines"
+ },
+ {
+ "name": "compact",
+ "label": "Compact"
+ }
+ ],
+ "editorScript": "file:./index.js",
+ "viewScript": "file:./view.js",
+ "style": [
+ "file:./style-view.css",
+ "wp-block-query-pagination"
+ ]
+}
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.asset.php
new file mode 100644
index 00000000..324ac5ed
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.asset.php
@@ -0,0 +1 @@
+ array('react', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives', 'wp-url'), 'version' => '59d9702e06860a6d13e4');
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.js
new file mode 100644
index 00000000..bcbcf3f1
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.js
@@ -0,0 +1,3 @@
+(()=>{var e={184:(e,t)=>{var a;!function(){"use strict";var n={}.hasOwnProperty;function l(){for(var e=[],t=0;t{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";const e=window.wp.blocks,t=window.wp.element,n=window.wp.primitives,l=(0,t.createElement)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(n.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"}));function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t{e.preventDefault(),!a&&r(l)}},n)}const d={outlined:"outlined",minimal:"minimal"};function f(e){let{compact:a,nextLabel:n,page:l,pageClick:r,perPage:o,prevLabel:i,total:c,variant:s=d.outlined}=e;const p=((e,t)=>{let a=[1,e-2,e-1,e,e+1,e+2,t];a.sort(((e,t)=>e-t)),a=a.filter(((e,a,n)=>e>=1&&e<=t&&n.lastIndexOf(e)===a));for(let e=a.length-2;e>=0;e--)a[e]===a[e+1]&&a.splice(e+1,1);return a})(l,Math.ceil(c/o)),u=b()("alignwide wp-block-query-pagination is-content-justification-space-between is-layout-flex wp-block-query-pagination-is-layout-flex",`is-${s}`,{"is-compact":a});return(0,t.createElement)("nav",{className:u},i&&(0,t.createElement)(w,{key:"prev",page:l-1,pageClick:r,active:1===l,"aria-label":i,className:"wp-block-query-pagination-previous block-editor-block-list__block"},i),!a&&(0,t.createElement)("div",{className:"block-editor-block-list__block wp-block wp-block-query-pagination-numbers"},p.map((e=>(0,t.createElement)(w,{key:e,page:e,pageClick:r,active:e===l,className:"page-numbers"},e)))),n&&(0,t.createElement)(w,{key:"next",page:l+1,pageClick:r,active:l===Math.ceil(c/o),"aria-label":n,className:"wp-block-query-pagination-next block-editor-block-list__block"},n))}const{namespace:g}=window._activityPubOptions;function y(e){let{selectedUser:a,per_page:n,order:l,title:o,page:i,setPage:p,className:m="",followLinks:b=!0,followerData:w=!1}=e;const d="site"===a?0:a,[y,k]=(0,s.useState)([]),[E,_]=(0,s.useState)(0),[x,C]=(0,s.useState)(0),[S,O]=function(){const[e,t]=(0,s.useState)(1);return[e,t]}(),N=i||S,P=p||O,L=(0,t.createInterpolateElement)(/* translators: arrow for previous followers link */
+(0,c.__)("← Less","activitypub"),{span:(0,t.createElement)("span",{class:"wp-block-query-pagination-previous-arrow is-arrow-arrow","aria-hidden":"true"})}),j=(0,t.createInterpolateElement)(/* translators: arrow for next followers link */
+(0,c.__)("More → ","activitypub"),{span:(0,t.createElement)("span",{class:"wp-block-query-pagination-next-arrow is-arrow-arrow","aria-hidden":"true"})}),M=(e,t)=>{k(e),C(t),_(Math.ceil(t/n))};return(0,s.useEffect)((()=>{if(w&&1===N)return M(w.followers,w.total);const e=function(e,t,a,n){const l=`/${g}/users/${e}/followers`,r={per_page:t,order:a,page:n,context:"full"};return(0,v.addQueryArgs)(l,r)}(d,n,l,N);u()({path:e}).then((e=>M(e.orderedItems,e.totalItems))).catch((()=>{}))}),[d,n,l,N,w]),(0,t.createElement)("div",{className:"activitypub-follower-block "+m},(0,t.createElement)("h3",null,o),(0,t.createElement)("ul",null,y&&y.map((e=>(0,t.createElement)("li",{key:e.url},(0,t.createElement)(h,r({},e,{followLinks:b})))))),E>1&&(0,t.createElement)(f,{page:N,perPage:n,total:x,pageClick:P,nextLabel:j,prevLabel:L,compact:"is-style-compact"===m}))}function h(e){let{name:a,icon:n,url:l,preferredUsername:i,followLinks:c=!0}=e;const s=`@${i}`,p={};return c||(p.onClick=e=>e.preventDefault()),(0,t.createElement)(o.ExternalLink,r({className:"activitypub-link",href:l,title:s},p),(0,t.createElement)("img",{width:"40",height:"40",src:n.url,class:"avatar activitypub-avatar",alt:a}),(0,t.createElement)("span",{class:"activitypub-actor"},(0,t.createElement)("strong",{className:"activitypub-name"},a),(0,t.createElement)("span",{class:"sep"},"/"),(0,t.createElement)("span",{class:"activitypub-handle"},s)))}const k=window.wp.data,E=window._activityPubOptions?.enabled;(0,e.registerBlockType)("activitypub/followers",{edit:function(e){let{attributes:a,setAttributes:n}=e;const{order:l,per_page:s,selectedUser:p,title:u}=a,v=(0,i.useBlockProps)(),[m,b]=(0,t.useState)(1),w=[{label:(0,c.__)("New to old","activitypub"),value:"desc"},{label:(0,c.__)("Old to new","activitypub"),value:"asc"}],d=function(){const e=E?.users?(0,k.useSelect)((e=>e("core").getUsers({who:"authors"}))):[];return(0,t.useMemo)((()=>{if(!e)return[];const t=E?.site?[{label:(0,c.__)("Whole Site","activitypub"),value:"site"}]:[];return e.reduce(((e,t)=>(e.push({label:t.name,value:`${t.id}`}),e)),t)}),[e])}(),f=e=>t=>{b(1),n({[e]:t})};return(0,t.useEffect)((()=>{d.length&&(d.find((e=>{let{value:t}=e;return t===p}))||n({selectedUser:d[0].value}))}),[p,d]),(0,t.createElement)("div",v,(0,t.createElement)(i.InspectorControls,{key:"setting"},(0,t.createElement)(o.PanelBody,{title:(0,c.__)("Followers Options","activitypub")},(0,t.createElement)(o.TextControl,{label:(0,c.__)("Title","activitypub"),help:(0,c.__)("Title to display above the list of followers. Blank for none.","activitypub"),value:u,onChange:e=>n({title:e})}),d.length>1&&(0,t.createElement)(o.SelectControl,{label:(0,c.__)("Select User","activitypub"),value:p,options:d,onChange:f("selectedUser")}),(0,t.createElement)(o.SelectControl,{label:(0,c.__)("Sort","activitypub"),value:l,options:w,onChange:f("order")}),(0,t.createElement)(o.RangeControl,{label:(0,c.__)("Number of Followers","activitypub"),value:s,onChange:f("per_page"),min:1,max:10}))),(0,t.createElement)(y,r({},a,{page:m,setPage:b,followLinks:!1})))},save:()=>null,icon:l})})()})();
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view.css
new file mode 100644
index 00000000..824879e9
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view.css
@@ -0,0 +1 @@
+.activitypub-follower-block.is-style-compact .activitypub-handle,.activitypub-follower-block.is-style-compact .sep{display:none}.activitypub-follower-block.is-style-with-lines ul li{border-bottom:.5px solid;margin-bottom:.5rem;padding-bottom:.5rem}.activitypub-follower-block.is-style-with-lines ul li:last-child{border-bottom:none}.activitypub-follower-block.is-style-with-lines .activitypub-handle,.activitypub-follower-block.is-style-with-lines .activitypub-name{text-decoration:none}.activitypub-follower-block.is-style-with-lines .activitypub-handle:hover,.activitypub-follower-block.is-style-with-lines .activitypub-name:hover{text-decoration:underline}.activitypub-follower-block ul{margin:0!important;padding:0!important}.activitypub-follower-block li{display:flex;margin-bottom:1rem}.activitypub-follower-block img{border-radius:50%;height:40px;margin-right:var(--wp--preset--spacing--20,.5rem);width:40px}.activitypub-follower-block .activitypub-link{align-items:center;color:inherit!important;display:flex;flex-flow:row nowrap;max-width:100%;text-decoration:none!important}.activitypub-follower-block .activitypub-handle,.activitypub-follower-block .activitypub-name{text-decoration:underline;text-decoration-thickness:.8px;text-underline-position:under}.activitypub-follower-block .activitypub-handle:hover,.activitypub-follower-block .activitypub-name:hover{text-decoration:none}.activitypub-follower-block .activitypub-name{font-size:var(--wp--preset--font-size--normal,16px)}.activitypub-follower-block .activitypub-actor{font-size:var(--wp--preset--font-size--small,13px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activitypub-follower-block .sep{padding:0 .2rem}.activitypub-follower-block .wp-block-query-pagination{margin-top:1.5rem}.activitypub-follower-block .activitypub-pager{cursor:default}.activitypub-follower-block .activitypub-pager.current{opacity:.33}.activitypub-follower-block .page-numbers{padding:0 .2rem}.activitypub-follower-block .page-numbers.current{font-weight:700;opacity:1}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.asset.php
new file mode 100644
index 00000000..ba6c3228
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.asset.php
@@ -0,0 +1 @@
+ array('react', 'wp-api-fetch', 'wp-components', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-url'), 'version' => '04e51e7562fe28b0b2c3');
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.js
new file mode 100644
index 00000000..7c66f054
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.js
@@ -0,0 +1,3 @@
+(()=>{var e,t={189:(e,t,a)=>{"use strict";const r=window.wp.element;function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t{e.preventDefault(),!t&&l(n)}},a)}const v={outlined:"outlined",minimal:"minimal"};function f(e){let{compact:t,nextLabel:a,page:n,pageClick:l,perPage:o,prevLabel:i,total:c,variant:s=v.outlined}=e;const p=((e,t)=>{let a=[1,e-2,e-1,e,e+1,e+2,t];a.sort(((e,t)=>e-t)),a=a.filter(((e,a,r)=>e>=1&&e<=t&&r.lastIndexOf(e)===a));for(let e=a.length-2;e>=0;e--)a[e]===a[e+1]&&a.splice(e+1,1);return a})(n,Math.ceil(c/o)),f=u()("alignwide wp-block-query-pagination is-content-justification-space-between is-layout-flex wp-block-query-pagination-is-layout-flex",`is-${s}`,{"is-compact":t});return(0,r.createElement)("nav",{className:f},i&&(0,r.createElement)(m,{key:"prev",page:n-1,pageClick:l,active:1===n,"aria-label":i,className:"wp-block-query-pagination-previous block-editor-block-list__block"},i),!t&&(0,r.createElement)("div",{className:"block-editor-block-list__block wp-block wp-block-query-pagination-numbers"},p.map((e=>(0,r.createElement)(m,{key:e,page:e,pageClick:l,active:e===n,className:"page-numbers"},e)))),a&&(0,r.createElement)(m,{key:"next",page:n+1,pageClick:l,active:n===Math.ceil(c/o),"aria-label":a,className:"wp-block-query-pagination-next block-editor-block-list__block"},a))}const b=window.wp.components,{namespace:d}=window._activityPubOptions;function w(e){let{selectedUser:t,per_page:a,order:o,title:p,page:u,setPage:m,className:v="",followLinks:b=!0,followerData:w=!1}=e;const y="site"===t?0:t,[k,h]=(0,l.useState)([]),[E,O]=(0,l.useState)(0),[x,_]=(0,l.useState)(0),[N,j]=function(){const[e,t]=(0,l.useState)(1);return[e,t]}(),S=u||N,C=m||j,L=(0,r.createInterpolateElement)(/* translators: arrow for previous followers link */
+(0,s.__)("← Less","activitypub"),{span:(0,r.createElement)("span",{class:"wp-block-query-pagination-previous-arrow is-arrow-arrow","aria-hidden":"true"})}),q=(0,r.createInterpolateElement)(/* translators: arrow for next followers link */
+(0,s.__)("More → ","activitypub"),{span:(0,r.createElement)("span",{class:"wp-block-query-pagination-next-arrow is-arrow-arrow","aria-hidden":"true"})}),P=(e,t)=>{h(e),_(t),O(Math.ceil(t/a))};return(0,l.useEffect)((()=>{if(w&&1===S)return P(w.followers,w.total);const e=function(e,t,a,r){const n=`/${d}/users/${e}/followers`,l={per_page:t,order:a,page:r,context:"full"};return(0,c.addQueryArgs)(n,l)}(y,a,o,S);i()({path:e}).then((e=>P(e.orderedItems,e.totalItems))).catch((()=>{}))}),[y,a,o,S,w]),(0,r.createElement)("div",{className:"activitypub-follower-block "+v},(0,r.createElement)("h3",null,p),(0,r.createElement)("ul",null,k&&k.map((e=>(0,r.createElement)("li",{key:e.url},(0,r.createElement)(g,n({},e,{followLinks:b})))))),E>1&&(0,r.createElement)(f,{page:S,perPage:a,total:x,pageClick:C,nextLabel:q,prevLabel:L,compact:"is-style-compact"===v}))}function g(e){let{name:t,icon:a,url:l,preferredUsername:o,followLinks:i=!0}=e;const c=`@${o}`,s={};return i||(s.onClick=e=>e.preventDefault()),(0,r.createElement)(b.ExternalLink,n({className:"activitypub-link",href:l,title:c},s),(0,r.createElement)("img",{width:"40",height:"40",src:a.url,class:"avatar activitypub-avatar",alt:t}),(0,r.createElement)("span",{class:"activitypub-actor"},(0,r.createElement)("strong",{className:"activitypub-name"},t),(0,r.createElement)("span",{class:"sep"},"/"),(0,r.createElement)("span",{class:"activitypub-handle"},c)))}const y=window.wp.domReady;a.n(y)()((()=>{[].forEach.call(document.querySelectorAll(".activitypub-follower-block"),(e=>{const t=JSON.parse(e.dataset.attrs);(0,r.render)((0,r.createElement)(w,t),e)}))}))},184:(e,t)=>{var a;!function(){"use strict";var r={}.hasOwnProperty;function n(){for(var e=[],t=0;t{if(!a){var o=1/0;for(p=0;p=l)&&Object.keys(r.O).every((e=>r.O[e](a[c])))?a.splice(c--,1):(i=!1,l0&&e[p-1][2]>l;p--)e[p]=e[p-1];e[p]=[a,n,l]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var a in t)r.o(t,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={638:0,962:0};r.O.j=t=>0===e[t];var t=(t,a)=>{var n,l,[o,i,c]=a,s=0;if(o.some((t=>0!==e[t]))){for(n in i)r.o(i,n)&&(r.m[n]=i[n]);if(c)var p=c(r)}for(t&&t(a);sr(189)));n=r.O(n)})();
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-activity.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-activity.php
new file mode 100644
index 00000000..96ee095b
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-activity.php
@@ -0,0 +1,229 @@
+ 'as:manuallyApprovesFollowers',
+ 'PropertyValue' => 'schema:PropertyValue',
+ 'schema' => 'http://schema.org#',
+ 'pt' => 'https://joinpeertube.org/ns#',
+ 'toot' => 'http://joinmastodon.org/ns#',
+ 'webfinger' => 'https://webfinger.net/#',
+ 'litepub' => 'http://litepub.social/ns#',
+ 'lemmy' => 'https://join-lemmy.org/ns#',
+ 'value' => 'schema:value',
+ 'Hashtag' => 'as:Hashtag',
+ 'featured' => array(
+ '@id' => 'toot:featured',
+ '@type' => '@id',
+ ),
+ 'featuredTags' => array(
+ '@id' => 'toot:featuredTags',
+ '@type' => '@id',
+ ),
+ 'alsoKnownAs' => array(
+ '@id' => 'as:alsoKnownAs',
+ '@type' => '@id',
+ ),
+ 'moderators' => array(
+ '@id' => 'lemmy:moderators',
+ '@type' => '@id',
+ ),
+ 'postingRestrictedToMods' => 'lemmy:postingRestrictedToMods',
+ 'discoverable' => 'toot:discoverable',
+ 'indexable' => 'toot:indexable',
+ 'sensitive' => 'as:sensitive',
+ 'resource' => 'webfinger:resource',
+ ),
+ );
+
+ /**
+ * The object's unique global identifier
+ *
+ * @see https://www.w3.org/TR/activitypub/#obj-id
+ *
+ * @var string
+ */
+ protected $id;
+
+ /**
+ * @var string
+ */
+ protected $type = 'Activity';
+
+ /**
+ * The context within which the object exists or an activity was
+ * performed.
+ * The notion of "context" used is intentionally vague.
+ * The intended function is to serve as a means of grouping objects
+ * and activities that share a common originating context or
+ * purpose. An example could be all activities relating to a common
+ * project or event.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-context
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | null
+ */
+ protected $context = self::CONTEXT;
+
+ /**
+ * Describes the direct object of the activity.
+ * For instance, in the activity "John added a movie to his
+ * wishlist", the object of the activity is the movie added.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-object-term
+ *
+ * @var string
+ * | Base_Objectr
+ * | Link
+ * | null
+ */
+ protected $object;
+
+ /**
+ * Describes one or more entities that either performed or are
+ * expected to perform the activity.
+ * Any single activity can have multiple actors.
+ * The actor MAY be specified using an indirect Link.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-actor
+ *
+ * @var string
+ * | \ActivityPhp\Type\Extended\AbstractActor
+ * | array
+ * | array
+ * | Link
+ */
+ protected $actor;
+
+ /**
+ * The indirect object, or target, of the activity.
+ * The precise meaning of the target is largely dependent on the
+ * type of action being described but will often be the object of
+ * the English preposition "to".
+ * For instance, in the activity "John added a movie to his
+ * wishlist", the target of the activity is John's wishlist.
+ * An activity can have more than one target.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-target
+ *
+ * @var string
+ * | ObjectType
+ * | array
+ * | Link
+ * | array
+ */
+ protected $target;
+
+ /**
+ * Describes the result of the activity.
+ * For instance, if a particular action results in the creation of
+ * a new resource, the result property can be used to describe
+ * that new resource.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-result
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | null
+ */
+ protected $result;
+
+ /**
+ * An indirect object of the activity from which the
+ * activity is directed.
+ * The precise meaning of the origin is the object of the English
+ * preposition "from".
+ * For instance, in the activity "John moved an item to List B
+ * from List A", the origin of the activity is "List A".
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-origin
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | null
+ */
+ protected $origin;
+
+ /**
+ * One or more objects used (or to be used) in the completion of an
+ * Activity.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-instrument
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | null
+ */
+ protected $instrument;
+
+ /**
+ * Set the object and copy Object properties to the Activity.
+ *
+ * Any to, bto, cc, bcc, and audience properties specified on the object
+ * MUST be copied over to the new Create activity by the server.
+ *
+ * @see https://www.w3.org/TR/activitypub/#object-without-create
+ *
+ * @param string|Base_Objectr|Link|null $object
+ *
+ * @return void
+ */
+ public function set_object( $object ) {
+ // convert array to object
+ if ( is_array( $object ) ) {
+ $object = Base_Object::init_from_array( $object );
+ }
+
+ // set object
+ $this->set( 'object', $object );
+
+ if ( ! is_object( $object ) ) {
+ return;
+ }
+
+ foreach ( array( 'to', 'bto', 'cc', 'bcc', 'audience' ) as $i ) {
+ $this->set( $i, $object->get( $i ) );
+ }
+
+ if ( $object->get_published() && ! $this->get_published() ) {
+ $this->set( 'published', $object->get_published() );
+ }
+
+ if ( $object->get_updated() && ! $this->get_updated() ) {
+ $this->set( 'updated', $object->get_updated() );
+ }
+
+ if ( $object->get_attributed_to() && ! $this->get_actor() ) {
+ $this->set( 'actor', $object->get_attributed_to() );
+ }
+
+ if ( $object->get_id() && ! $this->get_id() ) {
+ $this->set( 'id', $object->get_id() . '#activity' );
+ }
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-actor.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-actor.php
new file mode 100644
index 00000000..fabd653c
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-actor.php
@@ -0,0 +1,139 @@
+ 'https://my-example.com/actor#main-key'
+ * 'owner' => 'https://my-example.com/actor',
+ * 'publicKeyPem' => '-----BEGIN PUBLIC KEY-----
+ * MIIBI [...]
+ * DQIDAQAB
+ * -----END PUBLIC KEY-----'
+ * ]
+ *
+ * @see https://www.w3.org/wiki/SocialCG/ActivityPub/Authentication_Authorization#Signing_requests_using_HTTP_Signatures
+ *
+ * @var string|array|null
+ */
+ protected $public_key;
+
+ /**
+ * It's not part of the ActivityPub protocol but it's a quite common
+ * practice to lock an account. If anabled, new followers will not be
+ * automatically accepted, but will instead require you to manually
+ * approve them.
+ *
+ * WordPress does only support 'false' at the moment.
+ *
+ * @see https://docs.joinmastodon.org/spec/activitypub/#as
+ *
+ * @var boolean
+ */
+ protected $manually_approves_followers = false;
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-base-object.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-base-object.php
new file mode 100644
index 00000000..b73c621c
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-base-object.php
@@ -0,0 +1,678 @@
+
+ * | array
+ * | null
+ */
+ protected $attachment;
+
+ /**
+ * One or more entities to which this object is attributed.
+ * The attributed entities might not be Actors. For instance, an
+ * object might be attributed to the completion of another activity.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-attributedto
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | array
+ * | array
+ * | null
+ */
+ protected $attributed_to;
+
+ /**
+ * One or more entities that represent the total population of
+ * entities for which the object can considered to be relevant.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-audience
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | array
+ * | array
+ * | null
+ */
+ protected $audience;
+
+ /**
+ * The content or textual representation of the Object encoded as a
+ * JSON string. By default, the value of content is HTML.
+ * The mediaType property can be used in the object to indicate a
+ * different content type.
+ *
+ * The content MAY be expressed using multiple language-tagged
+ * values.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-content
+ *
+ * @var string|null
+ */
+ protected $content;
+
+ /**
+ * The context within which the object exists or an activity was
+ * performed.
+ * The notion of "context" used is intentionally vague.
+ * The intended function is to serve as a means of grouping objects
+ * and activities that share a common originating context or
+ * purpose. An example could be all activities relating to a common
+ * project or event.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-context
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | null
+ */
+ protected $context;
+
+ /**
+ * The content MAY be expressed using multiple language-tagged
+ * values.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-content
+ *
+ * @var array|null
+ */
+ protected $content_map;
+
+ /**
+ * A simple, human-readable, plain-text name for the object.
+ * HTML markup MUST NOT be included.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-name
+ *
+ * @var string|null xsd:string
+ */
+ protected $name;
+
+ /**
+ * The name MAY be expressed using multiple language-tagged values.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-name
+ *
+ * @var array|null rdf:langString
+ */
+ protected $name_map;
+
+ /**
+ * The date and time describing the actual or expected ending time
+ * of the object.
+ * When used with an Activity object, for instance, the endTime
+ * property specifies the moment the activity concluded or
+ * is expected to conclude.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-endtime
+ *
+ * @var string|null
+ */
+ protected $end_time;
+
+ /**
+ * The entity (e.g. an application) that generated the object.
+ *
+ * @var string|null
+ */
+ protected $generator;
+
+ /**
+ * An entity that describes an icon for this object.
+ * The image should have an aspect ratio of one (horizontal)
+ * to one (vertical) and should be suitable for presentation
+ * at a small size.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-icon
+ *
+ * @var string
+ * | Image
+ * | Link
+ * | array
+ * | array
+ * | null
+ */
+ protected $icon;
+
+ /**
+ * An entity that describes an image for this object.
+ * Unlike the icon property, there are no aspect ratio
+ * or display size limitations assumed.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-image-term
+ *
+ * @var string
+ * | Image
+ * | Link
+ * | array
+ * | array
+ * | null
+ */
+ protected $image;
+
+ /**
+ * One or more entities for which this object is considered a
+ * response.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-inreplyto
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | array
+ * | array
+ * | null
+ */
+ protected $in_reply_to;
+
+ /**
+ * One or more physical or logical locations associated with the
+ * object.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-location
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | array
+ * | array
+ * | null
+ */
+ protected $location;
+
+ /**
+ * An entity that provides a preview of this object.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-preview
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | null
+ */
+ protected $preview;
+
+ /**
+ * The date and time at which the object was published
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-published
+ *
+ * @var string|null xsd:dateTime
+ */
+ protected $published;
+
+ /**
+ * A Collection containing objects considered to be responses to
+ * this object.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-replies
+ *
+ * @var string
+ * | Collection
+ * | Link
+ * | null
+ */
+ protected $replies;
+
+ /**
+ * The date and time describing the actual or expected starting time
+ * of the object.
+ * When used with an Activity object, for instance, the startTime
+ * property specifies the moment the activity began
+ * or is scheduled to begin.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-starttime
+ *
+ * @var string|null xsd:dateTime
+ */
+ protected $start_time;
+
+ /**
+ * A natural language summarization of the object encoded as HTML.
+ * Multiple language tagged summaries MAY be provided.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-summary
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | null
+ */
+ protected $summary;
+
+ /**
+ * The content MAY be expressed using multiple language-tagged
+ * values.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-summary
+ *
+ * @var array|null
+ */
+ protected $summary_map;
+
+ /**
+ * One or more "tags" that have been associated with an objects.
+ * A tag can be any kind of Object.
+ * The key difference between attachment and tag is that the former
+ * implies association by inclusion, while the latter implies
+ * associated by reference.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-tag
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | array
+ * | array
+ * | null
+ */
+ protected $tag;
+
+ /**
+ * The date and time at which the object was updated
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-updated
+ *
+ * @var string|null xsd:dateTime
+ */
+ protected $updated;
+
+ /**
+ * One or more links to representations of the object.
+ *
+ * @var string
+ * | array
+ * | Link
+ * | array
+ * | null
+ */
+ protected $url;
+
+ /**
+ * An entity considered to be part of the public primary audience
+ * of an Object
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-to
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | array
+ * | array
+ * | null
+ */
+ protected $to;
+
+ /**
+ * An Object that is part of the private primary audience of this
+ * Object.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-bto
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | array
+ * | array
+ * | null
+ */
+ protected $bto;
+
+ /**
+ * An Object that is part of the public secondary audience of this
+ * Object.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-cc
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | array
+ * | array
+ * | null
+ */
+ protected $cc;
+
+ /**
+ * One or more Objects that are part of the private secondary
+ * audience of this Object.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-bcc
+ *
+ * @var string
+ * | ObjectType
+ * | Link
+ * | array
+ * | array
+ * | null
+ */
+ protected $bcc;
+
+ /**
+ * The MIME media type of the value of the content property.
+ * If not specified, the content property is assumed to contain
+ * text/html content.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-mediatype
+ *
+ * @var string|null
+ */
+ protected $media_type;
+
+ /**
+ * When the object describes a time-bound resource, such as an audio
+ * or video, a meeting, etc, the duration property indicates the
+ * object's approximate duration.
+ * The value MUST be expressed as an xsd:duration as defined by
+ * xmlschema11-2, section 3.3.6 (e.g. a period of 5 seconds is
+ * represented as "PT5S").
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-duration
+ *
+ * @var string|null
+ */
+ protected $duration;
+
+ /**
+ * Intended to convey some sort of source from which the content
+ * markup was derived, as a form of provenance, or to support
+ * future editing by clients.
+ *
+ * @see https://www.w3.org/TR/activitypub/#source-property
+ *
+ * @var ObjectType
+ */
+ protected $source;
+
+ /**
+ * Magic function to implement getter and setter
+ *
+ * @param string $method The method name.
+ * @param string $params The method params.
+ *
+ * @return void
+ */
+ public function __call( $method, $params ) {
+ $var = \strtolower( \substr( $method, 4 ) );
+
+ if ( \strncasecmp( $method, 'get', 3 ) === 0 ) {
+ if ( ! $this->has( $var ) ) {
+ return new WP_Error( 'invalid_key', __( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) );
+ }
+
+ return $this->$var;
+ }
+
+ if ( \strncasecmp( $method, 'set', 3 ) === 0 ) {
+ $this->set( $var, $params[0] );
+ }
+
+ if ( \strncasecmp( $method, 'add', 3 ) === 0 ) {
+ $this->add( $var, $params[0] );
+ }
+ }
+
+ /**
+ * Magic function, to transform the object to string.
+ *
+ * @return string The object id.
+ */
+ public function __toString() {
+ return $this->to_string();
+ }
+
+ /**
+ * Function to transform the object to string.
+ *
+ * @return string The object id.
+ */
+ public function to_string() {
+ return $this->get_id();
+ }
+
+ /**
+ * Generic getter.
+ *
+ * @param string $key The key to get.
+ *
+ * @return mixed The value.
+ */
+ public function get( $key ) {
+ if ( ! $this->has( $key ) ) {
+ return new WP_Error( 'invalid_key', __( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) );
+ }
+
+ return call_user_func( array( $this, 'get_' . $key ) );
+ }
+
+ /**
+ * Check if the object has a key
+ *
+ * @param string $key The key to check.
+ *
+ * @return boolean True if the object has the key.
+ */
+ public function has( $key ) {
+ return property_exists( $this, $key );
+ }
+
+ /**
+ * Generic setter.
+ *
+ * @param string $key The key to set.
+ * @param string $value The value to set.
+ *
+ * @return mixed The value.
+ */
+ public function set( $key, $value ) {
+ if ( ! $this->has( $key ) ) {
+ return new WP_Error( 'invalid_key', __( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) );
+ }
+
+ $this->$key = $value;
+
+ return $this->$key;
+ }
+
+ /**
+ * Generic adder.
+ *
+ * @param string $key The key to set.
+ * @param mixed $value The value to add.
+ *
+ * @return mixed The value.
+ */
+ public function add( $key, $value ) {
+ if ( ! $this->has( $key ) ) {
+ return new WP_Error( 'invalid_key', __( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) );
+ }
+
+ if ( ! isset( $this->$key ) ) {
+ $this->$key = array();
+ }
+
+ $attributes = $this->$key;
+ $attributes[] = $value;
+
+ $this->$key = $attributes;
+
+ return $this->$key;
+ }
+
+ /**
+ * Convert JSON input to an array.
+ *
+ * @return string The JSON string.
+ *
+ * @return \Activitypub\Activity\Base_Object An Object built from the JSON string.
+ */
+ public static function init_from_json( $json ) {
+ $array = \json_decode( $json, true );
+
+ if ( ! is_array( $array ) ) {
+ $array = array();
+ }
+
+ return self::init_from_array( $array );
+ }
+
+ /**
+ * Convert JSON input to an array.
+ *
+ * @return string The object array.
+ *
+ * @return \Activitypub\Activity\Base_Object An Object built from the JSON string.
+ */
+ public static function init_from_array( $array ) {
+ if ( ! is_array( $array ) ) {
+ return new WP_Error( 'invalid_array', __( 'Invalid array', 'activitypub' ), array( 'status' => 404 ) );
+ }
+
+ $object = new static();
+
+ foreach ( $array as $key => $value ) {
+ $key = camel_to_snake_case( $key );
+ call_user_func( array( $object, 'set_' . $key ), $value );
+ }
+
+ return $object;
+ }
+
+ /**
+ * Convert JSON input to an array and pre-fill the object.
+ *
+ * @param string $json The JSON string.
+ */
+ public function from_json( $json ) {
+ $array = \json_decode( $json, true );
+
+ $this->from_array( $array );
+ }
+
+ /**
+ * Convert JSON input to an array and pre-fill the object.
+ *
+ * @param array $array The array.
+ */
+ public function from_array( $array ) {
+ foreach ( $array as $key => $value ) {
+ if ( $value ) {
+ $key = camel_to_snake_case( $key );
+ call_user_func( array( $this, 'set_' . $key ), $value );
+ }
+ }
+ }
+
+ /**
+ * Convert Object to an array.
+ *
+ * It tries to get the object attributes if they exist
+ * and falls back to the getters. Empty values are ignored.
+ *
+ * @return array An array built from the Object.
+ */
+ public function to_array() {
+ $array = array();
+ $vars = get_object_vars( $this );
+
+ foreach ( $vars as $key => $value ) {
+ // ignotre all _prefixed keys.
+ if ( '_' === substr( $key, 0, 1 ) ) {
+ continue;
+ }
+
+ // if value is empty, try to get it from a getter.
+ if ( ! $value ) {
+ $value = call_user_func( array( $this, 'get_' . $key ) );
+ }
+
+ if ( is_object( $value ) ) {
+ $value = $value->to_array();
+ }
+
+ // if value is still empty, ignore it for the array and continue.
+ if ( isset( $value ) ) {
+ $array[ snake_to_camel_case( $key ) ] = $value;
+ }
+ }
+
+ // replace 'context' key with '@context' and move it to the top.
+ if ( array_key_exists( 'context', $array ) ) {
+ $context = $array['context'];
+ unset( $array['context'] );
+ $array = array_merge( array( '@context' => $context ), $array );
+ }
+
+ $class = new ReflectionClass( $this );
+ $class = strtolower( $class->getShortName() );
+
+ $array = \apply_filters( 'activitypub_activity_object_array', $array, $class, $this->id, $this );
+ $array = \apply_filters( "activitypub_activity_{$class}_object_array", $array, $this->id, $this );
+
+ return $array;
+ }
+
+ /**
+ * Convert Object to JSON.
+ *
+ * @return string The JSON string.
+ */
+ public function to_json() {
+ $array = $this->to_array();
+
+ return \wp_json_encode( $array, \JSON_HEX_TAG | \JSON_HEX_AMP | \JSON_HEX_QUOT );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activity-dispatcher.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activity-dispatcher.php
new file mode 100644
index 00000000..462a75af
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activity-dispatcher.php
@@ -0,0 +1,125 @@
+post_author = Users::BLOG_USER_ID;
+
+ if ( is_single_user() ) {
+ self::send_activity( $wp_post, $type );
+ } else {
+ self::send_announce( $wp_post, $type );
+ }
+ }
+
+ /**
+ * Send Activities to followers and mentioned users.
+ *
+ * @param WP_Post $wp_post The ActivityPub Post.
+ * @param string $type The Activity-Type.
+ *
+ * @return void
+ */
+ public static function send_activity( WP_Post $wp_post, $type ) {
+ if ( is_user_disabled( $wp_post->post_author ) ) {
+ return;
+ }
+
+ $object = Post::transform( $wp_post )->to_object();
+
+ $activity = new Activity();
+ $activity->set_type( $type );
+ $activity->set_object( $object );
+
+ $follower_inboxes = Followers::get_inboxes( $wp_post->post_author );
+ $mentioned_inboxes = Mention::get_inboxes( $activity->get_cc() );
+
+ $inboxes = array_merge( $follower_inboxes, $mentioned_inboxes );
+ $inboxes = array_unique( $inboxes );
+
+ $json = $activity->to_json();
+
+ foreach ( $inboxes as $inbox ) {
+ safe_remote_post( $inbox, $json, $wp_post->post_author );
+ }
+ }
+
+ /**
+ * Send Announces to followers and mentioned users.
+ *
+ * @param WP_Post $wp_post The ActivityPub Post.
+ * @param string $type The Activity-Type.
+ *
+ * @return void
+ */
+ public static function send_announce( WP_Post $wp_post, $type ) {
+ if ( ! in_array( $type, array( 'Create', 'Update' ), true ) ) {
+ return;
+ }
+
+ if ( is_user_disabled( Users::BLOG_USER_ID ) ) {
+ return;
+ }
+
+ $object = Post::transform( $wp_post )->to_object();
+
+ $activity = new Activity();
+ $activity->set_type( 'Announce' );
+ // to pre-fill attributes like "published" and "id"
+ $activity->set_object( $object );
+ // send only the id
+ $activity->set_object( $object->get_id() );
+
+ $follower_inboxes = Followers::get_inboxes( $wp_post->post_author );
+ $mentioned_inboxes = Mention::get_inboxes( $activity->get_cc() );
+
+ $inboxes = array_merge( $follower_inboxes, $mentioned_inboxes );
+ $inboxes = array_unique( $inboxes );
+
+ $json = $activity->to_json();
+
+ foreach ( $inboxes as $inbox ) {
+ safe_remote_post( $inbox, $json, $wp_post->post_author );
+ }
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activitypub.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activitypub.php
new file mode 100644
index 00000000..6f654c5c
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activitypub.php
@@ -0,0 +1,413 @@
+comment_type ) ||
+ $id_or_email->user_id
+ ) {
+ return $args;
+ }
+
+ $allowed_comment_types = \apply_filters( 'get_avatar_comment_types', array( 'comment' ) );
+ if (
+ ! empty( $id_or_email->comment_type ) &&
+ ! \in_array(
+ $id_or_email->comment_type,
+ (array) $allowed_comment_types,
+ true
+ )
+ ) {
+ $args['url'] = false;
+ /** This filter is documented in wp-includes/link-template.php */
+ return \apply_filters( 'get_avatar_data', $args, $id_or_email );
+ }
+
+ // Check if comment has an avatar.
+ $avatar = self::get_avatar_url( $id_or_email->comment_ID );
+
+ if ( $avatar ) {
+ if ( ! isset( $args['class'] ) || ! \is_array( $args['class'] ) ) {
+ $args['class'] = array( 'u-photo' );
+ } else {
+ $args['class'][] = 'u-photo';
+ $args['class'] = \array_unique( $args['class'] );
+ }
+ $args['url'] = $avatar;
+ $args['class'][] = 'avatar-activitypub';
+ }
+
+ return $args;
+ }
+
+ /**
+ * Function to retrieve Avatar URL if stored in meta.
+ *
+ * @param int|WP_Comment $comment
+ *
+ * @return string $url
+ */
+ public static function get_avatar_url( $comment ) {
+ if ( \is_numeric( $comment ) ) {
+ $comment = \get_comment( $comment );
+ }
+ return \get_comment_meta( $comment->comment_ID, 'avatar_url', true );
+ }
+
+ /**
+ * Link remote comments to source url.
+ *
+ * @param string $comment_link
+ * @param object|WP_Comment $comment
+ *
+ * @return string $url
+ */
+ public static function remote_comment_link( $comment_link, $comment ) {
+ $remote_comment_link = get_comment_meta( $comment->comment_ID, 'source_url', true );
+ if ( $remote_comment_link ) {
+ $comment_link = esc_url( $remote_comment_link );
+ }
+ return $comment_link;
+ }
+
+ /**
+ * Store permalink in meta, to send delete Activity.
+ *
+ * @param string $post_id The Post ID.
+ *
+ * @return void
+ */
+ public static function trash_post( $post_id ) {
+ \add_post_meta(
+ $post_id,
+ 'activitypub_canonical_url',
+ \get_permalink( $post_id ),
+ true
+ );
+ }
+
+ /**
+ * Delete permalink from meta
+ *
+ * @param string $post_id The Post ID
+ *
+ * @return void
+ */
+ public static function untrash_post( $post_id ) {
+ \delete_post_meta( $post_id, 'activitypub_canonical_url' );
+ }
+
+ /**
+ * Add rewrite rules
+ */
+ public static function add_rewrite_rules() {
+ // If another system needs to take precedence over the ActivityPub rewrite rules,
+ // they can define their own and will manually call the appropriate functions as required.
+ if ( ACTIVITYPUB_DISABLE_REWRITES ) {
+ return;
+ }
+
+ if ( ! \class_exists( 'Webfinger' ) ) {
+ \add_rewrite_rule(
+ '^.well-known/webfinger',
+ 'index.php?rest_route=/' . ACTIVITYPUB_REST_NAMESPACE . '/webfinger',
+ 'top'
+ );
+ }
+
+ if ( ! \class_exists( 'Nodeinfo_Endpoint' ) && true === (bool) \get_option( 'blog_public', 1 ) ) {
+ \add_rewrite_rule(
+ '^.well-known/nodeinfo',
+ 'index.php?rest_route=/' . ACTIVITYPUB_REST_NAMESPACE . '/nodeinfo/discovery',
+ 'top'
+ );
+ \add_rewrite_rule(
+ '^.well-known/x-nodeinfo2',
+ 'index.php?rest_route=/' . ACTIVITYPUB_REST_NAMESPACE . '/nodeinfo2',
+ 'top'
+ );
+ }
+
+ \add_rewrite_rule(
+ '^@([\w\-\.]+)',
+ 'index.php?rest_route=/' . ACTIVITYPUB_REST_NAMESPACE . '/users/$matches[1]',
+ 'top'
+ );
+
+ \add_rewrite_endpoint( 'activitypub', EP_AUTHORS | EP_PERMALINK | EP_PAGES );
+ }
+
+ /**
+ * Flush rewrite rules;
+ */
+ public static function flush_rewrite_rules() {
+ self::add_rewrite_rules();
+ \flush_rewrite_rules();
+ }
+
+ /**
+ * Theme compatibility stuff
+ *
+ * @return void
+ */
+ public static function theme_compat() {
+ $site_icon = get_theme_support( 'custom-logo' );
+
+ if ( ! $site_icon ) {
+ // custom logo support
+ add_theme_support(
+ 'custom-logo',
+ array(
+ 'height' => 80,
+ 'width' => 80,
+ )
+ );
+ }
+
+ $custom_header = get_theme_support( 'custom-header' );
+
+ if ( ! $custom_header ) {
+ // This theme supports a custom header
+ $custom_header_args = array(
+ 'width' => 1250,
+ 'height' => 600,
+ 'header-text' => true,
+ );
+ add_theme_support( 'custom-header', $custom_header_args );
+ }
+ }
+
+ /**
+ * Display plugin upgrade notice to users
+ *
+ * @param array $data The plugin data
+ *
+ * @return void
+ */
+ public static function plugin_update_message( $data ) {
+ if ( ! isset( $data['upgrade_notice'] ) ) {
+ return;
+ }
+
+ printf(
+ '%s
',
+ wp_kses(
+ wpautop( $data['upgrade_notice '] ),
+ array(
+ 'p' => array(),
+ 'a' => array( 'href', 'title' ),
+ 'strong' => array(),
+ 'em' => array(),
+ )
+ )
+ );
+ }
+
+ /**
+ * Register the "Followers" Taxonomy
+ *
+ * @return void
+ */
+ private static function register_post_types() {
+ register_post_type(
+ Followers::POST_TYPE,
+ array(
+ 'labels' => array(
+ 'name' => _x( 'Followers', 'post_type plural name', 'activitypub' ),
+ 'singular_name' => _x( 'Follower', 'post_type single name', 'activitypub' ),
+ ),
+ 'public' => false,
+ 'hierarchical' => false,
+ 'rewrite' => false,
+ 'query_var' => false,
+ 'delete_with_user' => false,
+ 'can_export' => true,
+ 'supports' => array(),
+ )
+ );
+
+ register_post_meta(
+ Followers::POST_TYPE,
+ 'activitypub_inbox',
+ array(
+ 'type' => 'string',
+ 'single' => true,
+ 'sanitize_callback' => 'sanitize_url',
+ )
+ );
+
+ register_post_meta(
+ Followers::POST_TYPE,
+ 'activitypub_errors',
+ array(
+ 'type' => 'string',
+ 'single' => false,
+ 'sanitize_callback' => function( $value ) {
+ if ( ! is_string( $value ) ) {
+ throw new Exception( 'Error message is no valid string' );
+ }
+
+ return esc_sql( $value );
+ },
+ )
+ );
+
+ register_post_meta(
+ Followers::POST_TYPE,
+ 'activitypub_user_id',
+ array(
+ 'type' => 'string',
+ 'single' => false,
+ 'sanitize_callback' => function( $value ) {
+ return esc_sql( $value );
+ },
+ )
+ );
+
+ register_post_meta(
+ Followers::POST_TYPE,
+ 'activitypub_actor_json',
+ array(
+ 'type' => 'string',
+ 'single' => true,
+ 'sanitize_callback' => function( $value ) {
+ return sanitize_text_field( $value );
+ },
+ )
+ );
+
+ do_action( 'activitypub_after_register_post_type' );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-admin.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-admin.php
new file mode 100644
index 00000000..f8afc8d2
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-admin.php
@@ -0,0 +1,275 @@
+ 'string',
+ 'description' => \__( 'Use title and link, summary, full or custom content', 'activitypub' ),
+ 'show_in_rest' => array(
+ 'schema' => array(
+ 'enum' => array(
+ 'title',
+ 'excerpt',
+ 'content',
+ ),
+ ),
+ ),
+ 'default' => 'content',
+ )
+ );
+ \register_setting(
+ 'activitypub',
+ 'activitypub_custom_post_content',
+ array(
+ 'type' => 'string',
+ 'description' => \__( 'Define your own custom post template', 'activitypub' ),
+ 'show_in_rest' => true,
+ 'default' => ACTIVITYPUB_CUSTOM_POST_CONTENT,
+ )
+ );
+ \register_setting(
+ 'activitypub',
+ 'activitypub_max_image_attachments',
+ array(
+ 'type' => 'integer',
+ 'description' => \__( 'Number of images to attach to posts.', 'activitypub' ),
+ 'default' => ACTIVITYPUB_MAX_IMAGE_ATTACHMENTS,
+ )
+ );
+ \register_setting(
+ 'activitypub',
+ 'activitypub_object_type',
+ array(
+ 'type' => 'string',
+ 'description' => \__( 'The Activity-Object-Type', 'activitypub' ),
+ 'show_in_rest' => array(
+ 'schema' => array(
+ 'enum' => array(
+ 'note',
+ 'article',
+ 'wordpress-post-format',
+ ),
+ ),
+ ),
+ 'default' => 'note',
+ )
+ );
+ \register_setting(
+ 'activitypub',
+ 'activitypub_use_hashtags',
+ array(
+ 'type' => 'boolean',
+ 'description' => \__( 'Add hashtags in the content as native tags and replace the #tag with the tag-link', 'activitypub' ),
+ 'default' => '0',
+ )
+ );
+ \register_setting(
+ 'activitypub',
+ 'activitypub_support_post_types',
+ array(
+ 'type' => 'string',
+ 'description' => \esc_html__( 'Enable ActivityPub support for post types', 'activitypub' ),
+ 'show_in_rest' => true,
+ 'default' => array( 'post', 'pages' ),
+ )
+ );
+ \register_setting(
+ 'activitypub',
+ 'activitypub_blog_user_identifier',
+ array(
+ 'type' => 'string',
+ 'description' => \esc_html__( 'The Identifier of the Blog-User', 'activitypub' ),
+ 'show_in_rest' => true,
+ 'default' => Blog_User::get_default_username(),
+ 'sanitize_callback' => function( $value ) {
+ // hack to allow dots in the username
+ $parts = explode( '.', $value );
+ $sanitized = array();
+
+ foreach ( $parts as $part ) {
+ $sanitized[] = \sanitize_title( $part );
+ }
+
+ $sanitized = implode( '.', $sanitized );
+
+ // check for login or nicename.
+ $user = new WP_User_Query(
+ array(
+ 'search' => $sanitized,
+ 'search_columns' => array( 'user_login', 'user_nicename' ),
+ 'number' => 1,
+ 'hide_empty' => true,
+ 'fields' => 'ID',
+ )
+ );
+
+ if ( $user->results ) {
+ add_settings_error(
+ 'activitypub_blog_user_identifier',
+ 'activitypub_blog_user_identifier',
+ \esc_html__( 'You cannot use an existing author\'s name for the blog profile ID.', 'activitypub' ),
+ 'error'
+ );
+
+ return Blog_User::get_default_username();
+ }
+
+ return $sanitized;
+ },
+ )
+ );
+ \register_setting(
+ 'activitypub',
+ 'activitypub_enable_users',
+ array(
+ 'type' => 'boolean',
+ 'description' => \__( 'Every Author on this Blog (with the publish_posts capability) gets his own ActivityPub enabled Profile.', 'activitypub' ),
+ 'default' => '1',
+ )
+ );
+ \register_setting(
+ 'activitypub',
+ 'activitypub_enable_blog_user',
+ array(
+ 'type' => 'boolean',
+ 'description' => \__( 'Your Blog becomes an ActivityPub compatible Profile.', 'activitypub' ),
+ 'default' => '0',
+ )
+ );
+ }
+
+ public static function add_settings_help_tab() {
+ require_once ACTIVITYPUB_PLUGIN_DIR . 'includes/help.php';
+ }
+
+ public static function add_followers_list_help_tab() {
+ // todo
+ }
+
+ public static function add_profile( $user ) {
+ $description = get_user_meta( $user->ID, 'activitypub_user_description', true );
+
+ \load_template(
+ ACTIVITYPUB_PLUGIN_DIR . 'templates/user-settings.php',
+ true,
+ array(
+ 'description' => $description,
+ )
+ );
+ }
+
+ public static function save_user_description( $user_id ) {
+ if ( ! isset( $_REQUEST['_apnonce'] ) ) {
+ return false;
+ }
+ $nonce = sanitize_text_field( wp_unslash( $_REQUEST['_apnonce'] ) );
+ if (
+ ! wp_verify_nonce( $nonce, 'activitypub-user-description' ) ||
+ ! current_user_can( 'edit_user', $user_id )
+ ) {
+ return false;
+ }
+ $description = ! empty( $_POST['activitypub-user-description'] ) ? sanitize_text_field( wp_unslash( $_POST['activitypub-user-description'] ) ) : false;
+ if ( $description ) {
+ update_user_meta( $user_id, 'activitypub_user_description', $description );
+ }
+ }
+
+ public static function enqueue_scripts( $hook_suffix ) {
+ if ( false !== strpos( $hook_suffix, 'activitypub' ) ) {
+ wp_enqueue_style( 'activitypub-admin-styles', plugins_url( 'assets/css/activitypub-admin.css', ACTIVITYPUB_PLUGIN_FILE ), array(), '1.0.0' );
+ wp_enqueue_script( 'activitypub-admin-styles', plugins_url( 'assets/js/activitypub-admin.js', ACTIVITYPUB_PLUGIN_FILE ), array( 'jquery' ), '1.0.0', false );
+ }
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-blocks.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-blocks.php
new file mode 100644
index 00000000..02f96591
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-blocks.php
@@ -0,0 +1,151 @@
+ ACTIVITYPUB_REST_NAMESPACE,
+ 'enabled' => array(
+ 'site' => ! is_user_type_disabled( 'blog' ),
+ 'users' => ! is_user_type_disabled( 'user' ),
+ ),
+ );
+ $js = sprintf( 'var _activityPubOptions = %s;', wp_json_encode( $data ) );
+ \wp_add_inline_script( $followers_handle, $js, 'before' );
+ \wp_add_inline_script( $follow_me_handle, $js, 'before' );
+ }
+
+ public static function register_blocks() {
+ \register_block_type_from_metadata(
+ ACTIVITYPUB_PLUGIN_DIR . '/build/followers',
+ array(
+ 'render_callback' => array( self::class, 'render_follower_block' ),
+ )
+ );
+ \register_block_type_from_metadata(
+ ACTIVITYPUB_PLUGIN_DIR . '/build/follow-me',
+ array(
+ 'render_callback' => array( self::class, 'render_follow_me_block' ),
+ )
+ );
+ }
+
+ private static function get_user_id( $user_string ) {
+ if ( is_numeric( $user_string ) ) {
+ return absint( $user_string );
+ }
+ // any other non-numeric falls back to 0, including the `site` string used in the UI
+ return 0;
+ }
+
+ /**
+ * Filter an array by a list of keys.
+ * @param array $array The array to filter.
+ * @param array $keys The keys to keep.
+ * @return array The filtered array.
+ */
+ protected static function filter_array_by_keys( $array, $keys ) {
+ return array_intersect_key( $array, array_flip( $keys ) );
+ }
+
+ /**
+ * Render the follow me block.
+ * @param array $attrs The block attributes.
+ * @return string The HTML to render.
+ */
+ public static function render_follow_me_block( $attrs ) {
+ $user_id = self::get_user_id( $attrs['selectedUser'] );
+ $user = User_Collection::get_by_id( $user_id );
+ if ( ! is_wp_error( $user ) ) {
+ $attrs['profileData'] = self::filter_array_by_keys(
+ $user->to_array(),
+ array( 'icon', 'name', 'resource' )
+ );
+ }
+ $wrapper_attributes = get_block_wrapper_attributes(
+ array(
+ 'aria-label' => __( 'Follow me on the Fediverse', 'activitypub' ),
+ 'class' => 'activitypub-follow-me-block-wrapper',
+ 'data-attrs' => wp_json_encode( $attrs ),
+ )
+ );
+ // todo: render more than an empty div?
+ return '
';
+ }
+
+ public static function render_follower_block( $attrs ) {
+ $followee_user_id = self::get_user_id( $attrs['selectedUser'] );
+ $per_page = absint( $attrs['per_page'] );
+ $follower_data = Followers::get_followers_with_count( $followee_user_id, $per_page );
+
+ $attrs['followerData']['total'] = $follower_data['total'];
+ $attrs['followerData']['followers'] = array_map(
+ function( $follower ) {
+ return self::filter_array_by_keys(
+ $follower->to_array(),
+ array( 'icon', 'name', 'preferredUsername', 'url' )
+ );
+ },
+ $follower_data['followers']
+ );
+ $wrapper_attributes = get_block_wrapper_attributes(
+ array(
+ 'aria-label' => __( 'Fediverse Followers', 'activitypub' ),
+ 'class' => 'activitypub-follower-block',
+ 'data-attrs' => wp_json_encode( $attrs ),
+ )
+ );
+
+ $html = '';
+ if ( $attrs['title'] ) {
+ $html .= '
' . esc_html( $attrs['title'] ) . ' ';
+ }
+ $html .= '
';
+ foreach ( $follower_data['followers'] as $follower ) {
+ $html .= '' . self::render_follower( $follower ) . ' ';
+ }
+ // We are only pagination on the JS side. Could be revisited but we gotta ship!
+ $html .= ' ';
+ return $html;
+ }
+
+ public static function render_follower( $follower ) {
+ $external_svg = ' ';
+ $template =
+ '
+
+
+ %s
+ /
+ @%s
+
+ %s
+ ';
+
+ $data = $follower->to_array();
+
+ return sprintf(
+ $template,
+ esc_url( $data['url'] ),
+ esc_attr( $data['name'] ),
+ esc_attr( $data['icon']['url'] ),
+ esc_html( $data['name'] ),
+ esc_html( $data['preferredUsername'] ),
+ $external_svg
+ );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-debug.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-debug.php
new file mode 100644
index 00000000..36f8bda5
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-debug.php
@@ -0,0 +1,36 @@
+post_content, $match ) ) {
+ $tags = \implode( ', ', $match[1] );
+
+ \wp_add_post_tags( $post->post_parent, $tags );
+ }
+
+ return $id;
+ }
+
+ /**
+ * Filter to replace the #tags in the content with links
+ *
+ * @param string $the_content the post-content
+ *
+ * @return string the filtered post-content
+ */
+ public static function the_content( $the_content ) {
+ // small protection against execution timeouts: limit to 1 MB
+ if ( mb_strlen( $the_content ) > MB_IN_BYTES ) {
+ return $the_content;
+ }
+ $tag_stack = array();
+ $protected_tags = array(
+ 'pre',
+ 'code',
+ 'textarea',
+ 'style',
+ 'a',
+ );
+ $content_with_links = '';
+ $in_protected_tag = false;
+ foreach ( wp_html_split( $the_content ) as $chunk ) {
+ if ( preg_match( '#^$#i', $chunk, $m ) ) {
+ $content_with_links .= $chunk;
+ continue;
+ }
+
+ if ( preg_match( '#^<(/)?([a-z-]+)\b[^>]*>$#i', $chunk, $m ) ) {
+ $tag = strtolower( $m[2] );
+ if ( '/' === $m[1] ) {
+ // Closing tag.
+ $i = array_search( $tag, $tag_stack );
+ // We can only remove the tag from the stack if it is in the stack.
+ if ( false !== $i ) {
+ $tag_stack = array_slice( $tag_stack, 0, $i );
+ }
+ } else {
+ // Opening tag, add it to the stack.
+ $tag_stack[] = $tag;
+ }
+
+ // If we're in a protected tag, the tag_stack contains at least one protected tag string.
+ // The protected tag state can only change when we encounter a start or end tag.
+ $in_protected_tag = array_intersect( $tag_stack, $protected_tags );
+
+ // Never inspect tags.
+ $content_with_links .= $chunk;
+ continue;
+ }
+
+ if ( $in_protected_tag ) {
+ // Don't inspect a chunk inside an inspected tag.
+ $content_with_links .= $chunk;
+ continue;
+ }
+
+ // Only reachable when there is no protected tag in the stack.
+ $content_with_links .= \preg_replace_callback( '/' . ACTIVITYPUB_HASHTAGS_REGEXP . '/i', array( '\Activitypub\Hashtag', 'replace_with_links' ), $chunk );
+ }
+
+ return $content_with_links;
+ }
+
+ /**
+ * A callback for preg_replace to build the term links
+ *
+ * @param array $result the preg_match results
+ * @return string the final string
+ */
+ public static function replace_with_links( $result ) {
+ $tag = $result[1];
+ $tag_object = \get_term_by( 'name', $tag, 'post_tag' );
+
+ if ( $tag_object ) {
+ $link = \get_term_link( $tag_object, 'post_tag' );
+ return \sprintf( '#%s ', $link, $tag );
+ }
+
+ return '#' . $tag;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-health-check.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-health-check.php
new file mode 100644
index 00000000..74a6f9ec
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-health-check.php
@@ -0,0 +1,377 @@
+ \__( 'Author URL test', 'activitypub' ),
+ 'test' => array( self::class, 'test_author_url' ),
+ );
+ }
+
+ $tests['direct']['activitypub_test_webfinger'] = array(
+ 'label' => __( 'WebFinger Test', 'activitypub' ),
+ 'test' => array( self::class, 'test_webfinger' ),
+ );
+
+ $tests['direct']['activitypub_test_system_cron'] = array(
+ 'label' => __( 'System Cron Test', 'activitypub' ),
+ 'test' => array( self::class, 'test_system_cron' ),
+ );
+
+ return $tests;
+ }
+
+ /**
+ * Author URL tests
+ *
+ * @return array
+ */
+ public static function test_author_url() {
+ $result = array(
+ 'label' => \__( 'Author URL accessible', 'activitypub' ),
+ 'status' => 'good',
+ 'badge' => array(
+ 'label' => \__( 'ActivityPub', 'activitypub' ),
+ 'color' => 'green',
+ ),
+ 'description' => \sprintf(
+ '%s
',
+ \__( 'Your author URL is accessible and supports the required "Accept" header.', 'activitypub' )
+ ),
+ 'actions' => '',
+ 'test' => 'test_author_url',
+ );
+
+ $check = self::is_author_url_accessible();
+
+ if ( true === $check ) {
+ return $result;
+ }
+
+ $result['status'] = 'critical';
+ $result['label'] = \__( 'Author URL is not accessible', 'activitypub' );
+ $result['badge']['color'] = 'red';
+ $result['description'] = \sprintf(
+ '%s
',
+ $check->get_error_message()
+ );
+
+ return $result;
+ }
+
+ /**
+ * System Cron tests
+ *
+ * @return array
+ */
+ public static function test_system_cron() {
+ $result = array(
+ 'label' => \__( 'System Task Scheduler configured', 'activitypub' ),
+ 'status' => 'good',
+ 'badge' => array(
+ 'label' => \__( 'ActivityPub', 'activitypub' ),
+ 'color' => 'green',
+ ),
+ 'description' => \sprintf(
+ '%s
',
+ \esc_html__( 'You seem to use the System Task Scheduler to process WP_Cron tasks.', 'activitypub' )
+ ),
+ 'actions' => '',
+ 'test' => 'test_system_cron',
+ );
+
+ if ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) {
+ return $result;
+ }
+
+ $result['status'] = 'recommended';
+ $result['label'] = \__( 'System Task Scheduler not configured', 'activitypub' );
+ $result['badge']['color'] = 'orange';
+ $result['description'] = \sprintf(
+ '%s
',
+ \__( 'Enhance your WordPress site’s performance and mitigate potential heavy loads caused by plugins like ActivityPub by setting up a system cron job to run WP Cron. This ensures scheduled tasks are executed consistently and reduces the reliance on website traffic for trigger events.', 'activitypub' )
+ );
+ $result['actions'] .= sprintf(
+ '%s %s
',
+ __( 'https://developer.wordpress.org/plugins/cron/hooking-wp-cron-into-the-system-task-scheduler/', 'activitypub' ),
+ __( 'Learn how to hook the WP-Cron into the System Task Scheduler.', 'activitypub' ),
+ /* translators: Hidden accessibility text. */
+ __( '(opens in a new tab)', 'activitypub' )
+ );
+
+ return $result;
+ }
+
+ /**
+ * WebFinger tests
+ *
+ * @return array
+ */
+ public static function test_webfinger() {
+ $result = array(
+ 'label' => \__( 'WebFinger endpoint', 'activitypub' ),
+ 'status' => 'good',
+ 'badge' => array(
+ 'label' => \__( 'ActivityPub', 'activitypub' ),
+ 'color' => 'green',
+ ),
+ 'description' => \sprintf(
+ '%s
',
+ \__( 'Your WebFinger endpoint is accessible and returns the correct information.', 'activitypub' )
+ ),
+ 'actions' => '',
+ 'test' => 'test_webfinger',
+ );
+
+ $check = self::is_webfinger_endpoint_accessible();
+
+ if ( true === $check ) {
+ return $result;
+ }
+
+ $result['status'] = 'critical';
+ $result['label'] = \__( 'WebFinger endpoint is not accessible', 'activitypub' );
+ $result['badge']['color'] = 'red';
+ $result['description'] = \sprintf(
+ '%s
',
+ $check->get_error_message()
+ );
+
+ return $result;
+ }
+
+ /**
+ * Check if `author_posts_url` is accessible and that request returns correct JSON
+ *
+ * @return boolean|WP_Error
+ */
+ public static function is_author_url_accessible() {
+ $user = \wp_get_current_user();
+ $author_url = \get_author_posts_url( $user->ID );
+ $reference_author_url = self::get_author_posts_url( $user->ID, $user->user_nicename );
+
+ // check for "author" in URL
+ if ( $author_url !== $reference_author_url ) {
+ return new WP_Error(
+ 'author_url_not_accessible',
+ \sprintf(
+ // translators: %s: Author URL
+ \__(
+ 'Your author URL %s
was replaced, this is often done by plugins.',
+ 'activitypub'
+ ),
+ $author_url
+ )
+ );
+ }
+
+ // try to access author URL
+ $response = \wp_remote_get(
+ $author_url,
+ array(
+ 'headers' => array( 'Accept' => 'application/activity+json' ),
+ 'redirection' => 0,
+ )
+ );
+
+ if ( \is_wp_error( $response ) ) {
+ return new WP_Error(
+ 'author_url_not_accessible',
+ \sprintf(
+ // translators: %s: Author URL
+ \__(
+ 'Your author URL %s
is not accessible. Please check your WordPress setup or permalink structure. If the setup seems fine, maybe check if a plugin might restrict the access.',
+ 'activitypub'
+ ),
+ $author_url
+ )
+ );
+ }
+
+ $response_code = \wp_remote_retrieve_response_code( $response );
+
+ // check for redirects
+ if ( \in_array( $response_code, array( 301, 302, 307, 308 ), true ) ) {
+ return new WP_Error(
+ 'author_url_not_accessible',
+ \sprintf(
+ // translators: %s: Author URL
+ \__(
+ 'Your author URL %s
is redirecting to another page, this is often done by SEO plugins like "Yoast SEO".',
+ 'activitypub'
+ ),
+ $author_url
+ )
+ );
+ }
+
+ // check if response is JSON
+ $body = \wp_remote_retrieve_body( $response );
+
+ if ( ! \is_string( $body ) || ! \is_array( \json_decode( $body, true ) ) ) {
+ return new WP_Error(
+ 'author_url_not_accessible',
+ \sprintf(
+ // translators: %s: Author URL
+ \__(
+ 'Your author URL %s
does not return valid JSON for application/activity+json
. Please check if your hosting supports alternate Accept
headers.',
+ 'activitypub'
+ ),
+ $author_url
+ )
+ );
+ }
+
+ return true;
+ }
+
+ /**
+ * Check if WebFinger endpoint is accessible and profile request returns correct JSON
+ *
+ * @return boolean|WP_Error
+ */
+ public static function is_webfinger_endpoint_accessible() {
+ $user = \wp_get_current_user();
+
+ if ( ! is_user_type_disabled( 'blog' ) ) {
+ $account = get_webfinger_resource( $user->ID );
+ } elseif ( ! is_user_type_disabled( 'user' ) ) {
+ $account = get_webfinger_resource( Users::BLOG_USER_ID );
+ } else {
+ $account = '';
+ }
+
+ $url = Webfinger::resolve( $account );
+ if ( \is_wp_error( $url ) ) {
+ $allowed = array( 'code' => array() );
+ $not_accessible = wp_kses(
+ // translators: %s: Author URL
+ \__(
+ 'Your WebFinger endpoint %s
is not accessible. Please check your WordPress setup or permalink structure.',
+ 'activitypub'
+ ),
+ $allowed
+ );
+ $invalid_response = wp_kses(
+ // translators: %s: Author URL
+ \__(
+ 'Your WebFinger endpoint %s
does not return valid JSON for application/jrd+json
.',
+ 'activitypub'
+ ),
+ $allowed
+ );
+
+ $health_messages = array(
+ 'webfinger_url_not_accessible' => \sprintf(
+ $not_accessible,
+ $url->get_error_data()
+ ),
+ 'webfinger_url_invalid_response' => \sprintf(
+ // translators: %s: Author URL
+ $invalid_response,
+ $url->get_error_data()
+ ),
+ );
+ $message = null;
+ if ( isset( $health_messages[ $url->get_error_code() ] ) ) {
+ $message = $health_messages[ $url->get_error_code() ];
+ }
+ return new WP_Error(
+ $url->get_error_code(),
+ $message,
+ $url->get_error_data()
+ );
+ }
+
+ return true;
+ }
+
+ /**
+ * Retrieve the URL to the author page for the user with the ID provided.
+ *
+ * @global WP_Rewrite $wp_rewrite WordPress rewrite component.
+ *
+ * @param int $author_id Author ID.
+ * @param string $author_nicename Optional. The author's nicename (slug). Default empty.
+ *
+ * @return string The URL to the author's page.
+ */
+ public static function get_author_posts_url( $author_id, $author_nicename = '' ) {
+ global $wp_rewrite;
+ $auth_id = (int) $author_id;
+ $link = $wp_rewrite->get_author_permastruct();
+
+ if ( empty( $link ) ) {
+ $file = home_url( '/' );
+ $link = $file . '?author=' . $auth_id;
+ } else {
+ if ( '' === $author_nicename ) {
+ $user = get_userdata( $author_id );
+ if ( ! empty( $user->user_nicename ) ) {
+ $author_nicename = $user->user_nicename;
+ }
+ }
+ $link = str_replace( '%author%', $author_nicename, $link );
+ $link = home_url( user_trailingslashit( $link ) );
+ }
+
+ return $link;
+ }
+
+ /**
+ * Static function for generating site debug data when required.
+ *
+ * @param array $info The debug information to be added to the core information page.
+ * @return array The filtered information
+ */
+ public static function debug_information( $info ) {
+ $info['activitypub'] = array(
+ 'label' => __( 'ActivityPub', 'activitypub' ),
+ 'fields' => array(
+ 'webfinger' => array(
+ 'label' => __( 'WebFinger Resource', 'activitypub' ),
+ 'value' => Webfinger::get_user_resource( wp_get_current_user()->ID ),
+ 'private' => true,
+ ),
+ 'author_url' => array(
+ 'label' => __( 'Author URL', 'activitypub' ),
+ 'value' => get_author_posts_url( wp_get_current_user()->ID ),
+ 'private' => true,
+ ),
+ 'plugin_version' => array(
+ 'label' => __( 'Plugin Version', 'activitypub' ),
+ 'value' => get_plugin_version(),
+ 'private' => true,
+ ),
+ ),
+ );
+
+ return $info;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-http.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-http.php
new file mode 100644
index 00000000..79519b3b
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-http.php
@@ -0,0 +1,131 @@
+ 100,
+ 'limit_response_size' => 1048576,
+ 'redirection' => 3,
+ 'user-agent' => "$user_agent; ActivityPub",
+ 'headers' => array(
+ 'Accept' => 'application/activity+json',
+ 'Content-Type' => 'application/activity+json',
+ 'Digest' => $digest,
+ 'Signature' => $signature,
+ 'Date' => $date,
+ ),
+ 'body' => $body,
+ );
+
+ $response = \wp_safe_remote_post( $url, $args );
+ $code = \wp_remote_retrieve_response_code( $response );
+
+ if ( $code >= 400 ) {
+ $response = new WP_Error( $code, __( 'Failed HTTP Request', 'activitypub' ), array( 'status' => $code ) );
+ }
+
+ \do_action( 'activitypub_safe_remote_post_response', $response, $url, $body, $user_id );
+
+ return $response;
+ }
+
+ /**
+ * Send a GET Request with the needed HTTP Headers
+ *
+ * @param string $url The URL endpoint
+ * @param int $user_id The WordPress User-ID
+ *
+ * @return array|WP_Error The GET Response or an WP_ERROR
+ */
+ public static function get( $url ) {
+ \do_action( 'activitypub_pre_http_get', $url );
+
+ $date = \gmdate( 'D, d M Y H:i:s T' );
+ $signature = Signature::generate_signature( Users::APPLICATION_USER_ID, 'get', $url, $date );
+
+ $wp_version = \get_bloginfo( 'version' );
+
+ /**
+ * Filter the HTTP headers user agent.
+ *
+ * @param string $user_agent The user agent string.
+ */
+ $user_agent = \apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . \get_bloginfo( 'url' ) );
+
+ $args = array(
+ 'timeout' => apply_filters( 'activitypub_remote_get_timeout', 100 ),
+ 'limit_response_size' => 1048576,
+ 'redirection' => 3,
+ 'user-agent' => "$user_agent; ActivityPub",
+ 'headers' => array(
+ 'Accept' => 'application/activity+json',
+ 'Content-Type' => 'application/activity+json',
+ 'Signature' => $signature,
+ 'Date' => $date,
+ ),
+ );
+
+ $response = \wp_safe_remote_get( $url, $args );
+ $code = \wp_remote_retrieve_response_code( $response );
+
+ if ( $code >= 400 ) {
+ $response = new WP_Error( $code, __( 'Failed HTTP Request', 'activitypub' ), array( 'status' => $code ) );
+ }
+
+ \do_action( 'activitypub_safe_remote_get_response', $response, $url );
+
+ return $response;
+ }
+
+ /**
+ * Check for URL for Tombstone.
+ *
+ * @param string $url The URL to check.
+ *
+ * @return bool True if the URL is a tombstone.
+ */
+ public static function is_tombstone( $url ) {
+ \do_action( 'activitypub_pre_http_is_tombstone', $url );
+
+ $response = \wp_safe_remote_get( $url );
+ $code = \wp_remote_retrieve_response_code( $response );
+
+ if ( in_array( (int) $code, array( 404, 410 ), true ) ) {
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mention.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mention.php
new file mode 100644
index 00000000..beb62468
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mention.php
@@ -0,0 +1,173 @@
+ MB_IN_BYTES ) {
+ return $the_content;
+ }
+ $tag_stack = array();
+ $protected_tags = array(
+ 'pre',
+ 'code',
+ 'textarea',
+ 'style',
+ 'a',
+ );
+ $content_with_links = '';
+ $in_protected_tag = false;
+ foreach ( wp_html_split( $the_content ) as $chunk ) {
+ if ( preg_match( '#^$#i', $chunk, $m ) ) {
+ $content_with_links .= $chunk;
+ continue;
+ }
+
+ if ( preg_match( '#^<(/)?([a-z-]+)\b[^>]*>$#i', $chunk, $m ) ) {
+ $tag = strtolower( $m[2] );
+ if ( '/' === $m[1] ) {
+ // Closing tag.
+ $i = array_search( $tag, $tag_stack );
+ // We can only remove the tag from the stack if it is in the stack.
+ if ( false !== $i ) {
+ $tag_stack = array_slice( $tag_stack, 0, $i );
+ }
+ } else {
+ // Opening tag, add it to the stack.
+ $tag_stack[] = $tag;
+ }
+
+ // If we're in a protected tag, the tag_stack contains at least one protected tag string.
+ // The protected tag state can only change when we encounter a start or end tag.
+ $in_protected_tag = array_intersect( $tag_stack, $protected_tags );
+
+ // Never inspect tags.
+ $content_with_links .= $chunk;
+ continue;
+ }
+
+ if ( $in_protected_tag ) {
+ // Don't inspect a chunk inside an inspected tag.
+ $content_with_links .= $chunk;
+ continue;
+ }
+
+ // Only reachable when there is no protected tag in the stack.
+ $content_with_links .= \preg_replace_callback( '/@' . ACTIVITYPUB_USERNAME_REGEXP . '/', array( self::class, 'replace_with_links' ), $chunk );
+ }
+
+ return $content_with_links;
+ }
+
+ /**
+ * A callback for preg_replace to build the user links
+ *
+ * @param array $result the preg_match results
+ *
+ * @return string the final string
+ */
+ public static function replace_with_links( $result ) {
+ $metadata = get_remote_metadata_by_actor( $result[0] );
+
+ if ( ! empty( $metadata ) && ! is_wp_error( $metadata ) && ! empty( $metadata['url'] ) ) {
+ $username = ltrim( $result[0], '@' );
+ if ( ! empty( $metadata['name'] ) ) {
+ $username = $metadata['name'];
+ }
+ if ( ! empty( $metadata['preferredUsername'] ) ) {
+ $username = $metadata['preferredUsername'];
+ }
+ return \sprintf( '@%s ', esc_url( $metadata['url'] ), esc_html( $username ) );
+ }
+
+ return $result[0];
+ }
+
+ /**
+ * Get the Inboxes for the mentioned Actors
+ *
+ * @param array $mentioned The list of Actors that were mentioned
+ *
+ * @return array The list of Inboxes
+ */
+ public static function get_inboxes( $mentioned ) {
+ $inboxes = array();
+
+ foreach ( $mentioned as $actor ) {
+ $inbox = self::get_inbox_by_mentioned_actor( $actor );
+
+ if ( ! is_wp_error( $inbox ) && $inbox ) {
+ $inboxes[] = $inbox;
+ }
+ }
+
+ return $inboxes;
+ }
+
+ /**
+ * Get the inbox from the Remote-Profile of a mentioned Actor
+ *
+ * @param string $actor The Actor-URL
+ *
+ * @return string The Inbox-URL
+ */
+ public static function get_inbox_by_mentioned_actor( $actor ) {
+ $metadata = get_remote_metadata_by_actor( $actor );
+
+ if ( \is_wp_error( $metadata ) ) {
+ return $metadata;
+ }
+
+ if ( isset( $metadata['endpoints'] ) && isset( $metadata['endpoints']['sharedInbox'] ) ) {
+ return $metadata['endpoints']['sharedInbox'];
+ }
+
+ if ( \array_key_exists( 'inbox', $metadata ) ) {
+ return $metadata['inbox'];
+ }
+
+ return new WP_Error( 'activitypub_no_inbox', \__( 'No "Inbox" found', 'activitypub' ), $metadata );
+ }
+
+ /**
+ * Extract the mentions from the post_content.
+ *
+ * @param array $mentions The already found mentions.
+ * @param string $post_content The post content.
+ *
+ * @return mixed The discovered mentions.
+ */
+ public static function extract_mentions( $mentions, $post_content ) {
+ \preg_match_all( '/@' . ACTIVITYPUB_USERNAME_REGEXP . '/i', $post_content, $matches );
+ foreach ( $matches[0] as $match ) {
+ $link = Webfinger::resolve( $match );
+ if ( ! is_wp_error( $link ) ) {
+ $mentions[ $match ] = $link;
+ }
+ }
+ return $mentions;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-migration.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-migration.php
new file mode 100644
index 00000000..adebb7e9
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-migration.php
@@ -0,0 +1,200 @@
+ 'ID' ) ) as $user_id ) {
+ $followers = get_user_meta( $user_id, 'activitypub_followers', true );
+
+ if ( $followers ) {
+ foreach ( $followers as $actor ) {
+ Followers::add_follower( $user_id, $actor );
+ }
+ }
+ }
+
+ Activitypub::flush_rewrite_rules();
+ }
+
+ /**
+ * Updates the custom template to use shortcodes instead of the deprecated templates.
+ *
+ * @return void
+ */
+ private static function migrate_from_0_16() {
+ // Get the custom template.
+ $old_content = \get_option( 'activitypub_custom_post_content', ACTIVITYPUB_CUSTOM_POST_CONTENT );
+
+ // If the old content exists but is a blank string, we're going to need a flag to updated it even
+ // after setting it to the default contents.
+ $need_update = false;
+
+ // If the old contents is blank, use the defaults.
+ if ( '' === $old_content ) {
+ $old_content = ACTIVITYPUB_CUSTOM_POST_CONTENT;
+ $need_update = true;
+ }
+
+ // Set the new content to be the old content.
+ $content = $old_content;
+
+ // Convert old templates to shortcodes.
+ $content = \str_replace( '%title%', '[ap_title]', $content );
+ $content = \str_replace( '%excerpt%', '[ap_excerpt]', $content );
+ $content = \str_replace( '%content%', '[ap_content]', $content );
+ $content = \str_replace( '%permalink%', '[ap_permalink type="html"]', $content );
+ $content = \str_replace( '%shortlink%', '[ap_shortlink type="html"]', $content );
+ $content = \str_replace( '%hashtags%', '[ap_hashtags]', $content );
+ $content = \str_replace( '%tags%', '[ap_hashtags]', $content );
+
+ // Store the new template if required.
+ if ( $content !== $old_content || $need_update ) {
+ \update_option( 'activitypub_custom_post_content', $content );
+ }
+ }
+
+ /**
+ * Clear the cache after updating to 1.3.0
+ *
+ * @return void
+ */
+ private static function migrate_from_1_2_0() {
+ $user_ids = get_users(
+ array(
+ 'fields' => 'ID',
+ 'capability__in' => array( 'publish_posts' ),
+ )
+ );
+
+ foreach ( $user_ids as $user_id ) {
+ wp_cache_delete( sprintf( Followers::CACHE_KEY_INBOXES, $user_id ), 'activitypub' );
+ }
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-scheduler.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-scheduler.php
new file mode 100644
index 00000000..11f40daf
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-scheduler.php
@@ -0,0 +1,169 @@
+post_type, $post_types, true ) ) {
+ return;
+ }
+
+ $type = false;
+
+ if ( 'publish' === $new_status && 'publish' !== $old_status ) {
+ $type = 'Create';
+ } elseif ( 'publish' === $new_status ) {
+ $type = 'Update';
+ } elseif ( 'trash' === $new_status ) {
+ $type = 'Delete';
+ }
+
+ if ( ! $type ) {
+ return;
+ }
+
+ \wp_schedule_single_event(
+ \time(),
+ 'activitypub_send_activity',
+ array( $post, $type )
+ );
+
+ \wp_schedule_single_event(
+ \time(),
+ sprintf(
+ 'activitypub_send_%s_activity',
+ \strtolower( $type )
+ ),
+ array( $post )
+ );
+ }
+
+ /**
+ * Update followers
+ *
+ * @return void
+ */
+ public static function update_followers() {
+ $number = 5;
+
+ if ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) {
+ $number = 50;
+ }
+
+ $followers = Followers::get_outdated_followers( $number );
+
+ foreach ( $followers as $follower ) {
+ $meta = get_remote_metadata_by_actor( $follower->get_id(), false );
+
+ if ( empty( $meta ) || ! is_array( $meta ) || is_wp_error( $meta ) ) {
+ Followers::add_error( $follower->get__id(), $meta );
+ } else {
+ $follower->from_array( $meta );
+ $follower->update();
+ }
+ }
+ }
+
+ /**
+ * Cleanup followers
+ *
+ * @return void
+ */
+ public static function cleanup_followers() {
+ $number = 5;
+
+ if ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) {
+ $number = 50;
+ }
+
+ $followers = Followers::get_faulty_followers( $number );
+
+ foreach ( $followers as $follower ) {
+ $meta = get_remote_metadata_by_actor( $follower->get_url(), false );
+
+ if ( is_tombstone( $meta ) ) {
+ $follower->delete();
+ } elseif ( empty( $meta ) || ! is_array( $meta ) || is_wp_error( $meta ) ) {
+ if ( $follower->count_errors() >= 5 ) {
+ $follower->delete();
+ } else {
+ Followers::add_error( $follower->get__id(), $meta );
+ }
+ } else {
+ $follower->reset_errors();
+ }
+ }
+ }
+
+ /**
+ * Schedule migration if DB-Version is not up to date.
+ *
+ * @return void
+ */
+ public static function schedule_migration() {
+ if ( ! \wp_next_scheduled( 'activitypub_schedule_migration' ) && ! Migration::is_latest_version() ) {
+ \wp_schedule_single_event( \time(), 'activitypub_schedule_migration' );
+ }
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-shortcodes.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-shortcodes.php
new file mode 100644
index 00000000..491a6add
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-shortcodes.php
@@ -0,0 +1,584 @@
+ID );
+
+ if ( ! $tags ) {
+ return '';
+ }
+
+ $hash_tags = array();
+
+ foreach ( $tags as $tag ) {
+ $hash_tags[] = \sprintf(
+ '%s ',
+ \esc_url( \get_tag_link( $tag ) ),
+ esc_hashtag( $tag->name )
+ );
+ }
+
+ return \implode( ' ', $hash_tags );
+ }
+
+ /**
+ * Generates output for the 'ap_title' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The post title.
+ */
+ public static function title( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ return \wp_strip_all_tags( \get_the_title( $item->ID ), true );
+ }
+
+ /**
+ * Generates output for the 'ap_excerpt' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The post excerpt.
+ */
+ public static function excerpt( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ $atts = shortcode_atts(
+ array( 'length' => ACTIVITYPUB_EXCERPT_LENGTH ),
+ $atts,
+ $tag
+ );
+
+ $excerpt_length = intval( $atts['length'] );
+
+ if ( 0 === $excerpt_length ) {
+ $excerpt_length = ACTIVITYPUB_EXCERPT_LENGTH;
+ }
+
+ $excerpt = \get_post_field( 'post_excerpt', $item );
+
+ if ( '' === $excerpt ) {
+
+ $content = \get_post_field( 'post_content', $item );
+
+ // An empty string will make wp_trim_excerpt do stuff we do not want.
+ if ( '' !== $content ) {
+ $excerpt = \strip_shortcodes( $content );
+
+ /** This filter is documented in wp-includes/post-template.php */
+ $excerpt = \apply_filters( 'the_content', $excerpt );
+ $excerpt = \str_replace( ']]>', ']]>', $excerpt );
+ }
+ }
+
+ // Strip out any remaining tags.
+ $excerpt = \wp_strip_all_tags( $excerpt );
+
+ /** This filter is documented in wp-includes/formatting.php */
+ $excerpt_more = \apply_filters( 'excerpt_more', ' [...]' );
+ $excerpt_more_len = strlen( $excerpt_more );
+
+ // We now have a excerpt, but we need to check it's length, it may be longer than we want for two reasons:
+ //
+ // * The user has entered a manual excerpt which is longer that what we want.
+ // * No manual excerpt exists so we've used the content which might be longer than we want.
+ //
+ // Either way, let's trim it up if we need too. Also, don't forget to take into account the more indicator
+ // as part of the total length.
+ //
+
+ // Setup a variable to hold the current excerpts length.
+ $current_excerpt_length = strlen( $excerpt );
+
+ // Setup a variable to keep track of our target length.
+ $target_excerpt_length = $excerpt_length - $excerpt_more_len;
+
+ // Setup a variable to keep track of the current max length.
+ $current_excerpt_max = $target_excerpt_length;
+
+ // This is a loop since we can't calculate word break the string after 'the_excpert' filter has run (we would break
+ // all kinds of html tags), so we have to cut the excerpt down a bit at a time until we hit our target length.
+ while ( $current_excerpt_length > $target_excerpt_length && $current_excerpt_max > 0 ) {
+ // Trim the excerpt based on wordwrap() positioning.
+ // Note: we're using as the linebreak just in case there are any newlines existing in the excerpt from the user.
+ // There won't be any left after we've run wp_strip_all_tags() in the code above, so they're
+ // safe to use here. It won't be included in the final excerpt as the substr() will trim it off.
+ $excerpt = substr( $excerpt, 0, strpos( wordwrap( $excerpt, $current_excerpt_max, ' ' ), ' ' ) );
+
+ // If something went wrong, or we're in a language that wordwrap() doesn't understand,
+ // just chop it off and don't worry about breaking in the middle of a word.
+ if ( strlen( $excerpt ) > $excerpt_length - $excerpt_more_len ) {
+ $excerpt = substr( $excerpt, 0, $current_excerpt_max );
+ }
+
+ // Add in the more indicator.
+ $excerpt = $excerpt . $excerpt_more;
+
+ // Run it through the excerpt filter which will add some html tags back in.
+ $excerpt_filtered = apply_filters( 'the_excerpt', $excerpt );
+
+ // Now set the current excerpt length to this new filtered length.
+ $current_excerpt_length = strlen( $excerpt_filtered );
+
+ // Check to see if we're over the target length.
+ if ( $current_excerpt_length > $target_excerpt_length ) {
+ // If so, remove 20 characters from the current max and run the loop again.
+ $current_excerpt_max = $current_excerpt_max - 20;
+ }
+ }
+
+ return \apply_filters( 'the_excerpt', $excerpt );
+ }
+
+ /**
+ * Generates output for the 'ap_content' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The post content.
+ */
+ public static function content( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ // prevent inception
+ remove_shortcode( 'ap_content' );
+
+ $atts = shortcode_atts(
+ array( 'apply_filters' => 'yes' ),
+ $atts,
+ $tag
+ );
+
+ $content = \get_post_field( 'post_content', $item );
+
+ if ( 'yes' === $atts['apply_filters'] ) {
+ $content = \apply_filters( 'the_content', $content );
+ } else {
+ $content = do_blocks( $content );
+ $content = wptexturize( $content );
+ $content = wp_filter_content_tags( $content );
+ }
+
+ // replace script and style elements
+ $content = \preg_replace( '@<(script|style)[^>]*?>.*?\\1>@si', '', $content );
+ $content = strip_shortcodes( $content );
+ $content = \trim( \preg_replace( '/[\n\r\t]/', '', $content ) );
+
+ add_shortcode( 'ap_content', array( 'Activitypub\Shortcodes', 'content' ) );
+
+ return $content;
+ }
+
+ /**
+ * Generates output for the 'ap_permalink' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The post permalink.
+ */
+ public static function permalink( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ $atts = shortcode_atts(
+ array(
+ 'type' => 'url',
+ ),
+ $atts,
+ $tag
+ );
+
+ if ( 'url' === $atts['type'] ) {
+ return \esc_url( \get_permalink( $item->ID ) );
+ }
+
+ return \sprintf(
+ '%1$s ',
+ \esc_url( \get_permalink( $item->ID ) )
+ );
+ }
+
+ /**
+ * Generates output for the 'ap_shortlink' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The post shortlink.
+ */
+ public static function shortlink( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ $atts = shortcode_atts(
+ array(
+ 'type' => 'url',
+ ),
+ $atts,
+ $tag
+ );
+
+ if ( 'url' === $atts['type'] ) {
+ return \esc_url( \wp_get_shortlink( $item->ID ) );
+ }
+
+ return \sprintf(
+ '%1$s ',
+ \esc_url( \wp_get_shortlink( $item->ID ) )
+ );
+ }
+
+ /**
+ * Generates output for the 'ap_image' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string
+ */
+ public static function image( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ $atts = shortcode_atts(
+ array(
+ 'type' => 'full',
+ ),
+ $atts,
+ $tag
+ );
+
+ $size = 'full';
+
+ if ( in_array(
+ $atts['type'],
+ array( 'thumbnail', 'medium', 'large', 'full' ),
+ true
+ ) ) {
+ $size = $atts['type'];
+ }
+
+ $image = \get_the_post_thumbnail_url( $item->ID, $size );
+
+ if ( ! $image ) {
+ return '';
+ }
+
+ return \esc_url( $image );
+ }
+
+ /**
+ * Generates output for the 'ap_hashcats' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The post categories as hashtags.
+ */
+ public static function hashcats( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ $categories = \get_the_category( $item->ID );
+
+ if ( ! $categories ) {
+ return '';
+ }
+
+ $hash_tags = array();
+
+ foreach ( $categories as $category ) {
+ $hash_tags[] = \sprintf(
+ '%s ',
+ \esc_url( \get_category_link( $category ) ),
+ esc_hashtag( $category->name )
+ );
+ }
+
+ return \implode( ' ', $hash_tags );
+ }
+
+ /**
+ * Generates output for the 'ap_author' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The author name.
+ */
+ public static function author( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ $author_id = \get_post_field( 'post_author', $item->ID );
+ $name = \get_the_author_meta( 'display_name', $author_id );
+
+ if ( ! $name ) {
+ return '';
+ }
+
+ return wp_strip_all_tags( $name );
+ }
+
+ /**
+ * Generates output for the 'ap_authorurl' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The author URL.
+ */
+ public static function authorurl( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ $author_id = \get_post_field( 'post_author', $item->ID );
+ $url = \get_the_author_meta( 'user_url', $author_id );
+
+ if ( ! $url ) {
+ return '';
+ }
+
+ return \esc_url( $url );
+ }
+
+ /**
+ * Generates output for the 'ap_blogurl' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The site URL.
+ */
+ public static function blogurl( $atts, $content, $tag ) {
+ return \esc_url( \get_bloginfo( 'url' ) );
+ }
+
+ /**
+ * Generates output for the 'ap_blogname' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string
+ */
+ public static function blogname( $atts, $content, $tag ) {
+ return \wp_strip_all_tags( \get_bloginfo( 'name' ) );
+ }
+
+ /**
+ * Generates output for the 'ap_blogdesc' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The site description.
+ */
+ public static function blogdesc( $atts, $content, $tag ) {
+ return \wp_strip_all_tags( \get_bloginfo( 'description' ) );
+ }
+
+ /**
+ * Generates output for the 'ap_date' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The post date.
+ */
+ public static function date( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ $datetime = \get_post_datetime( $item );
+ $dateformat = \get_option( 'date_format' );
+ $timeformat = \get_option( 'time_format' );
+
+ $date = $datetime->format( $dateformat );
+
+ if ( ! $date ) {
+ return '';
+ }
+
+ return $date;
+ }
+
+ /**
+ * Generates output for the 'ap_time' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The post time.
+ */
+ public static function time( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ $datetime = \get_post_datetime( $item );
+ $dateformat = \get_option( 'date_format' );
+ $timeformat = \get_option( 'time_format' );
+
+ $date = $datetime->format( $timeformat );
+
+ if ( ! $date ) {
+ return '';
+ }
+
+ return $date;
+ }
+
+ /**
+ * Generates output for the 'ap_datetime' Shortcode
+ *
+ * @param array $atts The Shortcode attributes.
+ * @param string $content The ActivityPub post-content.
+ * @param string $tag The tag/name of the Shortcode.
+ *
+ * @return string The post date/time.
+ */
+ public static function datetime( $atts, $content, $tag ) {
+ $item = self::get_item();
+
+ if ( ! $item ) {
+ return '';
+ }
+
+ $datetime = \get_post_datetime( $item );
+ $dateformat = \get_option( 'date_format' );
+ $timeformat = \get_option( 'time_format' );
+
+ $date = $datetime->format( $dateformat . ' @ ' . $timeformat );
+
+ if ( ! $date ) {
+ return '';
+ }
+
+ return $date;
+ }
+
+ /**
+ * Get a WordPress item to federate.
+ *
+ * Checks if item (WP_Post) is "public", a supported post type
+ * and not password protected.
+ *
+ * @return null|WP_Post The WordPress item.
+ */
+ protected static function get_item() {
+ $post = \get_post();
+
+ if ( ! $post ) {
+ return null;
+ }
+
+ if ( 'publish' !== \get_post_status( $post ) ) {
+ return null;
+ }
+
+ if ( \post_password_required( $post ) ) {
+ return null;
+ }
+
+ if ( ! \in_array( \get_post_type( $post ), \get_post_types_by_support( 'activitypub' ), true ) ) {
+ return null;
+ }
+
+ return $post;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-signature.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-signature.php
new file mode 100644
index 00000000..d021cf0e
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-signature.php
@@ -0,0 +1,499 @@
+ 'sha512',
+ 'private_key_bits' => 2048,
+ 'private_key_type' => \OPENSSL_KEYTYPE_RSA,
+ );
+
+ $key = \openssl_pkey_new( $config );
+ $priv_key = null;
+
+ \openssl_pkey_export( $key, $priv_key );
+
+ $detail = \openssl_pkey_get_details( $key );
+
+ // check if keys are valid
+ if (
+ empty( $priv_key ) || ! is_string( $priv_key ) ||
+ ! isset( $detail['key'] ) || ! is_string( $detail['key'] )
+ ) {
+ return array(
+ 'private_key' => null,
+ 'public_key' => null,
+ );
+ }
+
+ $key_pair = array(
+ 'private_key' => $priv_key,
+ 'public_key' => $detail['key'],
+ );
+
+ // persist keys
+ \add_option( $option_key, $key_pair );
+
+ return $key_pair;
+ }
+
+ /**
+ * Return the option key for a given user.
+ *
+ * @param int $user_id The WordPress User ID.
+ *
+ * @return string The option key.
+ */
+ protected static function get_signature_options_key_for( $user_id ) {
+ $id = $user_id;
+
+ if ( $user_id > 0 ) {
+ $user = \get_userdata( $user_id );
+ // sanatize username because it could include spaces and special chars
+ $id = sanitize_title( $user->user_login );
+ }
+
+ return 'activitypub_keypair_for_' . $id;
+ }
+
+ /**
+ * Check if there is a legacy key pair
+ *
+ * @param int $user_id The WordPress User ID.
+ *
+ * @return array|bool The key pair or false.
+ */
+ protected static function check_legacy_key_pair_for( $user_id ) {
+ switch ( $user_id ) {
+ case 0:
+ $public_key = \get_option( 'activitypub_blog_user_public_key' );
+ $private_key = \get_option( 'activitypub_blog_user_private_key' );
+ break;
+ case -1:
+ $public_key = \get_option( 'activitypub_application_user_public_key' );
+ $private_key = \get_option( 'activitypub_application_user_private_key' );
+ break;
+ default:
+ $public_key = \get_user_meta( $user_id, 'magic_sig_public_key', true );
+ $private_key = \get_user_meta( $user_id, 'magic_sig_private_key', true );
+ break;
+ }
+
+ if ( ! empty( $public_key ) && is_string( $public_key ) && ! empty( $private_key ) && is_string( $private_key ) ) {
+ return array(
+ 'private_key' => $private_key,
+ 'public_key' => $public_key,
+ );
+ }
+
+ return false;
+ }
+
+ /**
+ * Generates the Signature for a HTTP Request
+ *
+ * @param int $user_id The WordPress User ID.
+ * @param string $http_method The HTTP method.
+ * @param string $url The URL to send the request to.
+ * @param string $date The date the request is sent.
+ * @param string $digest The digest of the request body.
+ *
+ * @return string The signature.
+ */
+ public static function generate_signature( $user_id, $http_method, $url, $date, $digest = null ) {
+ $user = Users::get_by_id( $user_id );
+ $key = self::get_private_key_for( $user->get__id() );
+
+ $url_parts = \wp_parse_url( $url );
+
+ $host = $url_parts['host'];
+ $path = '/';
+
+ // add path
+ if ( ! empty( $url_parts['path'] ) ) {
+ $path = $url_parts['path'];
+ }
+
+ // add query
+ if ( ! empty( $url_parts['query'] ) ) {
+ $path .= '?' . $url_parts['query'];
+ }
+
+ $http_method = \strtolower( $http_method );
+
+ if ( ! empty( $digest ) ) {
+ $signed_string = "(request-target): $http_method $path\nhost: $host\ndate: $date\ndigest: $digest";
+ } else {
+ $signed_string = "(request-target): $http_method $path\nhost: $host\ndate: $date";
+ }
+
+ $signature = null;
+ \openssl_sign( $signed_string, $signature, $key, \OPENSSL_ALGO_SHA256 );
+ $signature = \base64_encode( $signature ); // phpcs:ignore
+
+ $key_id = $user->get_url() . '#main-key';
+
+ if ( ! empty( $digest ) ) {
+ return \sprintf( 'keyId="%s",algorithm="rsa-sha256",headers="(request-target) host date digest",signature="%s"', $key_id, $signature );
+ } else {
+ return \sprintf( 'keyId="%s",algorithm="rsa-sha256",headers="(request-target) host date",signature="%s"', $key_id, $signature );
+ }
+ }
+
+ /**
+ * Verifies the http signatures
+ *
+ * @param WP_REST_Request|array $request The request object or $_SERVER array.
+ *
+ * @return mixed A boolean or WP_Error.
+ */
+ public static function verify_http_signature( $request ) {
+ if ( is_object( $request ) ) { // REST Request object
+ // check if route starts with "index.php"
+ if ( str_starts_with( $request->get_route(), '/index.php' ) || ! rest_get_url_prefix() ) {
+ $route = $request->get_route();
+ } else {
+ $route = '/' . rest_get_url_prefix() . '/' . ltrim( $request->get_route(), '/' );
+ }
+
+ // fix route for subdirectory installs
+ $path = \wp_parse_url( \get_home_url(), PHP_URL_PATH );
+
+ if ( \is_string( $path ) ) {
+ $path = trim( $path, '/' );
+ }
+
+ if ( $path ) {
+ $route = '/' . $path . $route;
+ }
+
+ $headers = $request->get_headers();
+ $headers['(request-target)'][0] = strtolower( $request->get_method() ) . ' ' . $route;
+ } else {
+ $request = self::format_server_request( $request );
+ $headers = $request['headers']; // $_SERVER array
+ $headers['(request-target)'][0] = strtolower( $headers['request_method'][0] ) . ' ' . $headers['request_uri'][0];
+ }
+
+ if ( ! isset( $headers['signature'] ) ) {
+ return new WP_Error( 'activitypub_signature', __( 'Request not signed', 'activitypub' ), array( 'status' => 401 ) );
+ }
+
+ if ( array_key_exists( 'signature', $headers ) ) {
+ $signature_block = self::parse_signature_header( $headers['signature'][0] );
+ } elseif ( array_key_exists( 'authorization', $headers ) ) {
+ $signature_block = self::parse_signature_header( $headers['authorization'][0] );
+ }
+
+ if ( ! isset( $signature_block ) || ! $signature_block ) {
+ return new WP_Error( 'activitypub_signature', __( 'Incompatible request signature. keyId and signature are required', 'activitypub' ), array( 'status' => 401 ) );
+ }
+
+ $signed_headers = $signature_block['headers'];
+ if ( ! $signed_headers ) {
+ $signed_headers = array( 'date' );
+ }
+
+ $signed_data = self::get_signed_data( $signed_headers, $signature_block, $headers );
+ if ( ! $signed_data ) {
+ return new WP_Error( 'activitypub_signature', __( 'Signed request date outside acceptable time window', 'activitypub' ), array( 'status' => 401 ) );
+ }
+
+ $algorithm = self::get_signature_algorithm( $signature_block );
+ if ( ! $algorithm ) {
+ return new WP_Error( 'activitypub_signature', __( 'Unsupported signature algorithm (only rsa-sha256 and hs2019 are supported)', 'activitypub' ), array( 'status' => 401 ) );
+ }
+
+ if ( \in_array( 'digest', $signed_headers, true ) && isset( $body ) ) {
+ if ( is_array( $headers['digest'] ) ) {
+ $headers['digest'] = $headers['digest'][0];
+ }
+ $digest = explode( '=', $headers['digest'], 2 );
+ if ( 'SHA-256' === $digest[0] ) {
+ $hashalg = 'sha256';
+ }
+ if ( 'SHA-512' === $digest[0] ) {
+ $hashalg = 'sha512';
+ }
+
+ if ( \base64_encode( \hash( $hashalg, $body, true ) ) !== $digest[1] ) { // phpcs:ignore
+ return new WP_Error( 'activitypub_signature', __( 'Invalid Digest header', 'activitypub' ), array( 'status' => 401 ) );
+ }
+ }
+
+ $public_key = self::get_remote_key( $signature_block['keyId'] );
+
+ if ( \is_wp_error( $public_key ) ) {
+ return $public_key;
+ }
+
+ $verified = \openssl_verify( $signed_data, $signature_block['signature'], $public_key, $algorithm ) > 0;
+
+ if ( ! $verified ) {
+ return new WP_Error( 'activitypub_signature', __( 'Invalid signature', 'activitypub' ), array( 'status' => 401 ) );
+ }
+ return $verified;
+ }
+
+ /**
+ * Get public key from key_id
+ *
+ * @param string $key_id The URL to the public key.
+ *
+ * @return WP_Error|string The public key or WP_Error.
+ */
+ public static function get_remote_key( $key_id ) { // phpcs:ignore
+ $actor = get_remote_metadata_by_actor( strip_fragment_from_url( $key_id ) ); // phpcs:ignore
+ if ( \is_wp_error( $actor ) ) {
+ return new WP_Error(
+ 'activitypub_no_remote_profile_found',
+ __( 'No Profile found or Profile not accessible', 'activitypub' ),
+ array( 'status' => 401 )
+ );
+ }
+ if ( isset( $actor['publicKey']['publicKeyPem'] ) ) {
+ return \rtrim( $actor['publicKey']['publicKeyPem'] ); // phpcs:ignore
+ }
+ return new WP_Error(
+ 'activitypub_no_remote_key_found',
+ __( 'No Public-Key found', 'activitypub' ),
+ array( 'status' => 401 )
+ );
+ }
+
+ /**
+ * Gets the signature algorithm from the signature header
+ *
+ * @param array $signature_block
+ *
+ * @return string The signature algorithm.
+ */
+ public static function get_signature_algorithm( $signature_block ) {
+ if ( $signature_block['algorithm'] ) {
+ switch ( $signature_block['algorithm'] ) {
+ case 'rsa-sha-512':
+ return 'sha512'; //hs2019 https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-12
+ default:
+ return 'sha256';
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Parses the Signature header
+ *
+ * @param string $signature The signature header.
+ *
+ * @return array signature parts
+ */
+ public static function parse_signature_header( $signature ) {
+ $parsed_header = array();
+ $matches = array();
+
+ if ( \preg_match( '/keyId="(.*?)"/ism', $signature, $matches ) ) {
+ $parsed_header['keyId'] = trim( $matches[1] );
+ }
+ if ( \preg_match( '/created=([0-9]*)/ism', $signature, $matches ) ) {
+ $parsed_header['(created)'] = trim( $matches[1] );
+ }
+ if ( \preg_match( '/expires=([0-9]*)/ism', $signature, $matches ) ) {
+ $parsed_header['(expires)'] = trim( $matches[1] );
+ }
+ if ( \preg_match( '/algorithm="(.*?)"/ism', $signature, $matches ) ) {
+ $parsed_header['algorithm'] = trim( $matches[1] );
+ }
+ if ( \preg_match( '/headers="(.*?)"/ism', $signature, $matches ) ) {
+ $parsed_header['headers'] = \explode( ' ', trim( $matches[1] ) );
+ }
+ if ( \preg_match( '/signature="(.*?)"/ism', $signature, $matches ) ) {
+ $parsed_header['signature'] = \base64_decode( preg_replace( '/\s+/', '', trim( $matches[1] ) ) ); // phpcs:ignore
+ }
+
+ if ( ( $parsed_header['signature'] ) && ( $parsed_header['algorithm'] ) && ( ! $parsed_header['headers'] ) ) {
+ $parsed_header['headers'] = array( 'date' );
+ }
+
+ return $parsed_header;
+ }
+
+ /**
+ * Gets the header data from the included pseudo headers
+ *
+ * @param array $signed_headers The signed headers.
+ * @param array $signature_block (pseudo-headers)
+ * @param array $headers (http headers)
+ *
+ * @return string signed headers for comparison
+ */
+ public static function get_signed_data( $signed_headers, $signature_block, $headers ) {
+ $signed_data = '';
+ // This also verifies time-based values by returning false if any of these are out of range.
+ foreach ( $signed_headers as $header ) {
+ if ( 'host' === $header ) {
+ if ( isset( $headers['x_original_host'] ) ) {
+ $signed_data .= $header . ': ' . $headers['x_original_host'][0] . "\n";
+ continue;
+ }
+ }
+ if ( '(request-target)' === $header ) {
+ $signed_data .= $header . ': ' . $headers[ $header ][0] . "\n";
+ continue;
+ }
+ if ( str_contains( $header, '-' ) ) {
+ $signed_data .= $header . ': ' . $headers[ str_replace( '-', '_', $header ) ][0] . "\n";
+ continue;
+ }
+ if ( '(created)' === $header ) {
+ if ( ! empty( $signature_block['(created)'] ) && \intval( $signature_block['(created)'] ) > \time() ) {
+ // created in future
+ return false;
+ }
+ }
+ if ( '(expires)' === $header ) {
+ if ( ! empty( $signature_block['(expires)'] ) && \intval( $signature_block['(expires)'] ) < \time() ) {
+ // expired in past
+ return false;
+ }
+ }
+ if ( 'date' === $header ) {
+ // allow a bit of leeway for misconfigured clocks.
+ $d = new DateTime( $headers[ $header ][0] );
+ $d->setTimeZone( new DateTimeZone( 'UTC' ) );
+ $c = $d->format( 'U' );
+
+ $dplus = time() + ( 3 * HOUR_IN_SECONDS );
+ $dminus = time() - ( 3 * HOUR_IN_SECONDS );
+
+ if ( $c > $dplus || $c < $dminus ) {
+ // time out of range
+ return false;
+ }
+ }
+ $signed_data .= $header . ': ' . $headers[ $header ][0] . "\n";
+ }
+ return \rtrim( $signed_data, "\n" );
+ }
+
+ /**
+ * Generates the digest for a HTTP Request
+ *
+ * @param string $body The body of the request.
+ *
+ * @return string The digest.
+ */
+ public static function generate_digest( $body ) {
+ $digest = \base64_encode( \hash( 'sha256', $body, true ) ); // phpcs:ignore
+ return "SHA-256=$digest";
+ }
+
+ /**
+ * Formats the $_SERVER to resemble the WP_REST_REQUEST array,
+ * for use with verify_http_signature()
+ *
+ * @param array $_SERVER The $_SERVER array.
+ *
+ * @return array $request The formatted request array.
+ */
+ public static function format_server_request( $server ) {
+ $request = array();
+ foreach ( $server as $param_key => $param_val ) {
+ $req_param = strtolower( $param_key );
+ if ( 'REQUEST_URI' === $req_param ) {
+ $request['headers']['route'][] = $param_val;
+ } else {
+ $header_key = str_replace(
+ 'http_',
+ '',
+ $req_param
+ );
+ $request['headers'][ $header_key ][] = \wp_unslash( $param_val );
+ }
+ }
+ return $request;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-webfinger.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-webfinger.php
new file mode 100644
index 00000000..75f7ff69
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-webfinger.php
@@ -0,0 +1,208 @@
+get_resource();
+ }
+
+ /**
+ * Resolve a WebFinger resource
+ *
+ * @param string $resource The WebFinger resource
+ *
+ * @return string|WP_Error The URL or WP_Error
+ */
+ public static function resolve( $resource ) {
+ if ( ! $resource ) {
+ return null;
+ }
+
+ if ( ! preg_match( '/^@?' . ACTIVITYPUB_USERNAME_REGEXP . '$/i', $resource, $m ) ) {
+ return null;
+ }
+
+ $transient_key = 'activitypub_resolve_' . ltrim( $resource, '@' );
+
+ $link = \get_transient( $transient_key );
+ if ( $link ) {
+ return $link;
+ }
+
+ $url = \add_query_arg( 'resource', 'acct:' . ltrim( $resource, '@' ), 'https://' . $m[2] . '/.well-known/webfinger' );
+ if ( ! \wp_http_validate_url( $url ) ) {
+ $response = new WP_Error( 'invalid_webfinger_url', null, $url );
+ \set_transient( $transient_key, $response, HOUR_IN_SECONDS ); // Cache the error for a shorter period.
+ return $response;
+ }
+
+ // try to access author URL
+ $response = \wp_remote_get(
+ $url,
+ array(
+ 'headers' => array( 'Accept' => 'application/jrd+json' ),
+ 'redirection' => 2,
+ 'timeout' => 2,
+ )
+ );
+
+ if ( \is_wp_error( $response ) ) {
+ $link = new WP_Error( 'webfinger_url_not_accessible', null, $url );
+ \set_transient( $transient_key, $link, HOUR_IN_SECONDS ); // Cache the error for a shorter period.
+ return $link;
+ }
+
+ $body = \wp_remote_retrieve_body( $response );
+ $body = \json_decode( $body, true );
+
+ if ( empty( $body['links'] ) ) {
+ $link = new WP_Error( 'webfinger_url_invalid_response', null, $url );
+ \set_transient( $transient_key, $link, HOUR_IN_SECONDS ); // Cache the error for a shorter period.
+ return $link;
+ }
+
+ foreach ( $body['links'] as $link ) {
+ if ( 'self' === $link['rel'] && 'application/activity+json' === $link['type'] ) {
+ \set_transient( $transient_key, $link['href'], WEEK_IN_SECONDS );
+ return $link['href'];
+ }
+ }
+
+ $link = new WP_Error( 'webfinger_url_no_activitypub', null, $body );
+ \set_transient( $transient_key, $link, HOUR_IN_SECONDS ); // Cache the error for a shorter period.
+ return $link;
+ }
+
+ /**
+ * Convert a URI string to an identifier and its host.
+ * Automatically adds acct: if it's missing.
+ *
+ * @param string $url The URI (acct:, mailto:, http:, https:)
+ *
+ * @return WP_Error|array Error reaction or array with
+ * identifier and host as values
+ */
+ public static function get_identifier_and_host( $url ) {
+ // remove leading @
+ $url = ltrim( $url, '@' );
+
+ if ( ! preg_match( '/^([a-zA-Z+]+):/', $url, $match ) ) {
+ $identifier = 'acct:' . $url;
+ $scheme = 'acct';
+ } else {
+ $identifier = $url;
+ $scheme = $match[1];
+ }
+
+ $host = null;
+
+ switch ( $scheme ) {
+ case 'acct':
+ case 'mailto':
+ case 'xmpp':
+ if ( strpos( $identifier, '@' ) !== false ) {
+ $host = substr( $identifier, strpos( $identifier, '@' ) + 1 );
+ }
+ break;
+ default:
+ $host = wp_parse_url( $identifier, PHP_URL_HOST );
+ break;
+ }
+
+ if ( empty( $host ) ) {
+ return new WP_Error( 'invalid_identifier', __( 'Invalid Identifier', 'activitypub' ) );
+ }
+
+ return array( $identifier, $host );
+ }
+
+ /**
+ * Get the WebFinger data for a given URI
+ *
+ * @param string $identifier The Identifier: @
+ * @param string $host The Host: @
+ *
+ * @return WP_Error|array Error reaction or array with
+ * identifier and host as values
+ */
+ public static function get_data( $identifier, $host ) {
+ $webfinger_url = 'https://' . $host . '/.well-known/webfinger?resource=' . rawurlencode( $identifier );
+
+ $response = wp_safe_remote_get(
+ $webfinger_url,
+ array(
+ 'headers' => array( 'Accept' => 'application/jrd+json' ),
+ 'redirection' => 0,
+ 'timeout' => 2,
+ )
+ );
+
+ if ( is_wp_error( $response ) ) {
+ return new WP_Error( 'webfinger_url_not_accessible', null, $webfinger_url );
+ }
+
+ $body = wp_remote_retrieve_body( $response );
+
+ return json_decode( $body, true );
+ }
+
+ /**
+ * Undocumented function
+ *
+ * @return void
+ */
+ public static function get_remote_follow_endpoint( $uri ) {
+ $identifier_and_host = self::get_identifier_and_host( $uri );
+
+ if ( is_wp_error( $identifier_and_host ) ) {
+ return $identifier_and_host;
+ }
+
+ list( $identifier, $host ) = $identifier_and_host;
+
+ $data = self::get_data( $identifier, $host );
+
+ if ( is_wp_error( $data ) ) {
+ return $data;
+ }
+
+ if ( empty( $data['links'] ) ) {
+ return new WP_Error( 'webfinger_url_invalid_response', null, $data );
+ }
+
+ foreach ( $data['links'] as $link ) {
+ if ( 'http://ostatus.org/schema/1.0/subscribe' === $link['rel'] ) {
+ return $link['template'];
+ }
+ }
+
+ return new WP_Error( 'webfinger_remote_follow_endpoint_invalid', $data, array( 'status' => 417 ) );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-followers.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-followers.php
new file mode 100644
index 00000000..be98a46c
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-followers.php
@@ -0,0 +1,432 @@
+ 400 ) );
+ }
+
+ $follower = new Follower();
+ $follower->from_array( $meta );
+
+ $id = $follower->upsert();
+
+ if ( is_wp_error( $id ) ) {
+ return $id;
+ }
+
+ $post_meta = get_post_meta( $id, 'activitypub_user_id' );
+
+ // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
+ if ( is_array( $post_meta ) && ! in_array( $user_id, $post_meta ) ) {
+ add_post_meta( $id, 'activitypub_user_id', $user_id );
+ wp_cache_delete( sprintf( self::CACHE_KEY_INBOXES, $user_id ), 'activitypub' );
+ }
+
+ return $follower;
+ }
+
+ /**
+ * Remove a Follower
+ *
+ * @param int $user_id The ID of the WordPress User
+ * @param string $actor The Actor URL
+ *
+ * @return bool|WP_Error True on success, false or WP_Error on failure.
+ */
+ public static function remove_follower( $user_id, $actor ) {
+ wp_cache_delete( sprintf( self::CACHE_KEY_INBOXES, $user_id ), 'activitypub' );
+
+ $follower = self::get_follower( $user_id, $actor );
+
+ if ( ! $follower ) {
+ return false;
+ }
+
+ return delete_post_meta( $follower->get__id(), 'activitypub_user_id', $user_id );
+ }
+
+ /**
+ * Get a Follower.
+ *
+ * @param int $user_id The ID of the WordPress User
+ * @param string $actor The Actor URL
+ *
+ * @return \Activitypub\Model\Follower|null The Follower object or null
+ */
+ public static function get_follower( $user_id, $actor ) {
+ global $wpdb;
+
+ // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
+ $post_id = $wpdb->get_var(
+ $wpdb->prepare(
+ "SELECT DISTINCT p.ID FROM $wpdb->posts p INNER JOIN $wpdb->postmeta pm ON p.ID = pm.post_id WHERE p.post_type = %s AND pm.meta_key = 'activitypub_user_id' AND pm.meta_value = %d AND p.guid = %s",
+ array(
+ esc_sql( self::POST_TYPE ),
+ esc_sql( $user_id ),
+ esc_sql( $actor ),
+ )
+ )
+ );
+
+ if ( $post_id ) {
+ $post = get_post( $post_id );
+ return Follower::init_from_cpt( $post );
+ }
+
+ return null;
+ }
+
+ /**
+ * Get a Follower by Actor indepenent from the User.
+ *
+ * @param string $actor The Actor URL.
+ *
+ * @return \Activitypub\Model\Follower|null The Follower object or null
+ */
+ public static function get_follower_by_actor( $actor ) {
+ global $wpdb;
+
+ // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
+ $post_id = $wpdb->get_var(
+ $wpdb->prepare(
+ "SELECT ID FROM $wpdb->posts WHERE guid=%s",
+ esc_sql( $actor )
+ )
+ );
+
+ if ( $post_id ) {
+ $post = get_post( $post_id );
+ return Follower::init_from_cpt( $post );
+ }
+
+ return null;
+ }
+
+ /**
+ * Get the Followers of a given user
+ *
+ * @param int $user_id The ID of the WordPress User.
+ * @param int $number Maximum number of results to return.
+ * @param int $page Page number.
+ * @param array $args The WP_Query arguments.
+ * @return array List of `Follower` objects.
+ */
+ public static function get_followers( $user_id, $number = -1, $page = null, $args = array() ) {
+ $data = self::get_followers_with_count( $user_id, $number, $page, $args );
+ return $data['followers'];
+ }
+
+ /**
+ * Get the Followers of a given user, along with a total count for pagination purposes.
+ *
+ * @param int $user_id The ID of the WordPress User.
+ * @param int $number Maximum number of results to return.
+ * @param int $page Page number.
+ * @param array $args The WP_Query arguments.
+ *
+ * @return array
+ * followers List of `Follower` objects.
+ * total Total number of followers.
+ */
+ public static function get_followers_with_count( $user_id, $number = -1, $page = null, $args = array() ) {
+ $defaults = array(
+ 'post_type' => self::POST_TYPE,
+ 'posts_per_page' => $number,
+ 'paged' => $page,
+ 'orderby' => 'ID',
+ 'order' => 'DESC',
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
+ 'meta_query' => array(
+ array(
+ 'key' => 'activitypub_user_id',
+ 'value' => $user_id,
+ ),
+ ),
+ );
+
+ $args = wp_parse_args( $args, $defaults );
+ $query = new WP_Query( $args );
+ $total = $query->found_posts;
+ $followers = array_map(
+ function( $post ) {
+ return Follower::init_from_cpt( $post );
+ },
+ $query->get_posts()
+ );
+ return compact( 'followers', 'total' );
+ }
+
+ /**
+ * Get all Followers
+ *
+ * @param array $args The WP_Query arguments.
+ *
+ * @return array The Term list of Followers.
+ */
+ public static function get_all_followers() {
+ $args = array(
+ 'nopaging' => true,
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
+ 'meta_query' => array(
+ 'relation' => 'AND',
+ array(
+ 'key' => 'activitypub_inbox',
+ 'compare' => 'EXISTS',
+ ),
+ array(
+ 'key' => 'activitypub_actor_json',
+ 'compare' => 'EXISTS',
+ ),
+ ),
+ );
+ return self::get_followers( null, null, null, $args );
+ }
+
+ /**
+ * Count the total number of followers
+ *
+ * @param int $user_id The ID of the WordPress User
+ *
+ * @return int The number of Followers
+ */
+ public static function count_followers( $user_id ) {
+ $query = new WP_Query(
+ array(
+ 'post_type' => self::POST_TYPE,
+ 'fields' => 'ids',
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
+ 'meta_query' => array(
+ 'relation' => 'AND',
+ array(
+ 'key' => 'activitypub_user_id',
+ 'value' => $user_id,
+ ),
+ array(
+ 'key' => 'activitypub_inbox',
+ 'compare' => 'EXISTS',
+ ),
+ array(
+ 'key' => 'activitypub_actor_json',
+ 'compare' => 'EXISTS',
+ ),
+ ),
+ )
+ );
+
+ return $query->found_posts;
+ }
+
+ /**
+ * Returns all Inboxes fo a Users Followers
+ *
+ * @param int $user_id The ID of the WordPress User
+ *
+ * @return array The list of Inboxes
+ */
+ public static function get_inboxes( $user_id ) {
+ $cache_key = sprintf( self::CACHE_KEY_INBOXES, $user_id );
+ $inboxes = wp_cache_get( $cache_key, 'activitypub' );
+
+ if ( $inboxes ) {
+ return $inboxes;
+ }
+
+ // get all Followers of a ID of the WordPress User
+ $posts = new WP_Query(
+ array(
+ 'nopaging' => true,
+ 'post_type' => self::POST_TYPE,
+ 'fields' => 'ids',
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
+ 'meta_query' => array(
+ 'relation' => 'AND',
+ array(
+ 'key' => 'activitypub_inbox',
+ 'compare' => 'EXISTS',
+ ),
+ array(
+ 'key' => 'activitypub_user_id',
+ 'value' => $user_id,
+ ),
+ array(
+ 'key' => 'activitypub_inbox',
+ 'value' => '',
+ 'compare' => '!=',
+ ),
+ ),
+ )
+ );
+
+ $posts = $posts->get_posts();
+
+ if ( ! $posts ) {
+ return array();
+ }
+
+ global $wpdb;
+ // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery
+ $results = $wpdb->get_col(
+ $wpdb->prepare(
+ "SELECT DISTINCT meta_value FROM {$wpdb->postmeta}
+ WHERE post_id IN (" . implode( ', ', array_fill( 0, count( $posts ), '%d' ) ) . ")
+ AND meta_key = 'activitypub_inbox'
+ AND meta_value IS NOT NULL",
+ $posts
+ )
+ );
+
+ $inboxes = array_filter( $results );
+ wp_cache_set( $cache_key, $inboxes, 'activitypub' );
+
+ return $inboxes;
+ }
+
+ /**
+ * Get all Followers that have not been updated for a given time
+ *
+ * @param enum $output The output format, supported ARRAY_N, OBJECT and ACTIVITYPUB_OBJECT.
+ * @param int $number Limits the result.
+ * @param int $older_than The time in seconds.
+ *
+ * @return mixed The Term list of Followers, the format depends on $output.
+ */
+ public static function get_outdated_followers( $number = 50, $older_than = 86400 ) {
+ $args = array(
+ 'post_type' => self::POST_TYPE,
+ 'posts_per_page' => $number,
+ 'orderby' => 'modified',
+ 'order' => 'ASC',
+ 'post_status' => 'any', // 'any' includes 'trash
+ 'date_query' => array(
+ array(
+ 'column' => 'post_modified_gmt',
+ 'before' => gmdate( 'Y-m-d', \time() - $older_than ),
+ ),
+ ),
+ );
+
+ $posts = new WP_Query( $args );
+ $items = array();
+
+ foreach ( $posts->get_posts() as $follower ) {
+ $items[] = Follower::init_from_cpt( $follower ); // phpcs:ignore
+ }
+
+ return $items;
+ }
+
+ /**
+ * Get all Followers that had errors
+ *
+ * @param enum $output The output format, supported ARRAY_N, OBJECT and ACTIVITYPUB_OBJECT
+ * @param integer $number The number of Followers to return.
+ *
+ * @return mixed The Term list of Followers, the format depends on $output.
+ */
+ public static function get_faulty_followers( $number = 20 ) {
+ $args = array(
+ 'post_type' => self::POST_TYPE,
+ 'posts_per_page' => $number,
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
+ 'meta_query' => array(
+ 'relation' => 'OR',
+ array(
+ 'key' => 'activitypub_errors',
+ 'compare' => 'EXISTS',
+ ),
+ array(
+ 'key' => 'activitypub_inbox',
+ 'compare' => 'NOT EXISTS',
+ ),
+ array(
+ 'key' => 'activitypub_actor_json',
+ 'compare' => 'NOT EXISTS',
+ ),
+ array(
+ 'key' => 'activitypub_inbox',
+ 'value' => '',
+ 'compare' => '=',
+ ),
+ array(
+ 'key' => 'activitypub_actor_json',
+ 'value' => '',
+ 'compare' => '=',
+ ),
+ ),
+ );
+
+ $posts = new WP_Query( $args );
+ $items = array();
+
+ foreach ( $posts->get_posts() as $follower ) {
+ $items[] = Follower::init_from_cpt( $follower ); // phpcs:ignore
+ }
+
+ return $items;
+ }
+
+ /**
+ * This function is used to store errors that occur when
+ * sending an ActivityPub message to a Follower.
+ *
+ * The error will be stored in the
+ * post meta.
+ *
+ * @param int $post_id The ID of the WordPress Custom-Post-Type.
+ * @param mixed $error The error message. Can be a string or a WP_Error.
+ *
+ * @return int|false The meta ID on success, false on failure.
+ */
+ public static function add_error( $post_id, $error ) {
+ if ( is_string( $error ) ) {
+ $error_message = $error;
+ } elseif ( is_wp_error( $error ) ) {
+ $error_message = $error->get_error_message();
+ } else {
+ $error_message = __(
+ 'Unknown Error or misconfigured Error-Message',
+ 'activitypub'
+ );
+ }
+
+ return add_post_meta(
+ $post_id,
+ 'activitypub_errors',
+ $error_message
+ );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-interactions.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-interactions.php
new file mode 100644
index 00000000..7a0fdcf9
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-interactions.php
@@ -0,0 +1,235 @@
+comment_post_ID;
+ }
+
+ // not a reply to a post or comment
+ if ( ! $comment_post_id ) {
+ return false;
+ }
+
+ $meta = get_remote_metadata_by_actor( $activity['actor'] );
+
+ if ( ! $meta || \is_wp_error( $meta ) ) {
+ return false;
+ }
+
+ $commentdata = array(
+ 'comment_post_ID' => $comment_post_id,
+ 'comment_author' => \esc_attr( $meta['name'] ),
+ 'comment_author_url' => \esc_url_raw( $meta['url'] ),
+ 'comment_content' => \addslashes( $activity['object']['content'] ),
+ 'comment_type' => 'comment',
+ 'comment_author_email' => '',
+ 'comment_parent' => $parent_comment ? $parent_comment->comment_ID : 0,
+ 'comment_meta' => array(
+ 'source_id' => \esc_url_raw( $activity['object']['id'] ),
+ 'source_url' => \esc_url_raw( $activity['object']['url'] ),
+ 'protocol' => 'activitypub',
+ ),
+ );
+
+ if ( isset( $meta['icon']['url'] ) ) {
+ $commentdata['comment_meta']['avatar_url'] = \esc_url_raw( $meta['icon']['url'] );
+ }
+
+ // disable flood control
+ \remove_action( 'check_comment_flood', 'check_comment_flood_db', 10 );
+ // do not require email for AP entries
+ \add_filter( 'pre_option_require_name_email', '__return_false' );
+ // No nonce possible for this submission route
+ \add_filter(
+ 'akismet_comment_nonce',
+ function() {
+ return 'inactive';
+ }
+ );
+ \add_filter( 'wp_kses_allowed_html', array( self::class, 'allowed_comment_html' ), 10, 2 );
+
+ $comment = \wp_new_comment( $commentdata, true );
+
+ \remove_filter( 'wp_kses_allowed_html', array( self::class, 'allowed_comment_html' ), 10 );
+ \remove_filter( 'pre_option_require_name_email', '__return_false' );
+ // re-add flood control
+ \add_action( 'check_comment_flood', 'check_comment_flood_db', 10, 4 );
+
+ return $comment;
+ }
+
+ /**
+ * Update a comment
+ *
+ * @param array $activity The activity-object
+ *
+ * @return array|false The commentdata or false on failure
+ */
+ public static function update_comment( $activity ) {
+ $meta = get_remote_metadata_by_actor( $activity['actor'] );
+
+ //Determine comment_ID
+ $object_comment_id = url_to_commentid( \esc_url_raw( $activity['object']['id'] ) );
+
+ if ( ! $object_comment_id ) {
+ return false;
+ }
+
+ //found a local comment id
+ $commentdata = \get_comment( $object_comment_id, ARRAY_A );
+ $commentdata['comment_author'] = \esc_attr( $meta['name'] ? $meta['name'] : $meta['preferredUsername'] );
+ $commentdata['comment_content'] = \addslashes( $activity['object']['content'] );
+ if ( isset( $meta['icon']['url'] ) ) {
+ $commentdata['comment_meta']['avatar_url'] = \esc_url_raw( $meta['icon']['url'] );
+ }
+
+ // disable flood control
+ \remove_action( 'check_comment_flood', 'check_comment_flood_db', 10 );
+ // do not require email for AP entries
+ \add_filter( 'pre_option_require_name_email', '__return_false' );
+ // No nonce possible for this submission route
+ \add_filter(
+ 'akismet_comment_nonce',
+ function() {
+ return 'inactive';
+ }
+ );
+ \add_filter( 'wp_kses_allowed_html', array( self::class, 'allowed_comment_html' ), 10, 2 );
+
+ $comment = \wp_update_comment( $commentdata, true );
+
+ \remove_filter( 'wp_kses_allowed_html', array( self::class, 'allowed_comment_html' ), 10 );
+ \remove_filter( 'pre_option_require_name_email', '__return_false' );
+ // re-add flood control
+ \add_action( 'check_comment_flood', 'check_comment_flood_db', 10, 4 );
+
+ return $comment;
+ }
+
+ /**
+ * Get interaction(s) for a given URL/ID.
+ *
+ * @param strin $url The URL/ID to get interactions for.
+ *
+ * @return array The interactions as WP_Comment objects.
+ */
+ public static function get_interaction_by_id( $url ) {
+ $args = array(
+ 'nopaging' => true,
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
+ 'meta_query' => array(
+ 'relation' => 'AND',
+ array(
+ 'key' => 'protocol',
+ 'value' => 'activitypub',
+ ),
+ array(
+ 'relation' => 'OR',
+ array(
+ 'key' => 'source_url',
+ 'value' => $url,
+ ),
+ array(
+ 'key' => 'source_id',
+ 'value' => $url,
+ ),
+ ),
+ ),
+ );
+
+ $query = new WP_Comment_Query( $args );
+ return $query->comments;
+ }
+
+ /**
+ * Get interaction(s) for a given actor.
+ *
+ * @param string $actor The Actor-URL.
+ *
+ * @return array The interactions as WP_Comment objects.
+ */
+ public static function get_interactions_by_actor( $actor ) {
+ $meta = get_remote_metadata_by_actor( $actor );
+
+ // get URL, because $actor seems to be the ID
+ if ( $meta && ! is_wp_error( $meta ) && isset( $meta['url'] ) ) {
+ $actor = $meta['url'];
+ }
+
+ $args = array(
+ 'nopaging' => true,
+ 'author_url' => $actor,
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
+ 'meta_query' => array(
+ array(
+ 'key' => 'protocol',
+ 'value' => 'activitypub',
+ 'compare' => '=',
+ ),
+ ),
+ );
+ $comment_query = new WP_Comment_Query( $args );
+ return $comment_query->comments;
+ }
+
+ /**
+ * Adds line breaks to the list of allowed comment tags.
+ *
+ * @param array $allowed_tags Allowed HTML tags.
+ * @param string $context Context.
+ *
+ * @return array Filtered tag list.
+ */
+ public static function allowed_comment_html( $allowed_tags, $context = '' ) {
+ if ( 'pre_comment_content' !== $context ) {
+ // Do nothing.
+ return $allowed_tags;
+ }
+
+ // Add `p` and `br` to the list of allowed tags.
+ if ( ! array_key_exists( 'br', $allowed_tags ) ) {
+ $allowed_tags['br'] = array();
+ }
+
+ if ( ! array_key_exists( 'p', $allowed_tags ) ) {
+ $allowed_tags['p'] = array();
+ }
+
+ return $allowed_tags;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-users.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-users.php
new file mode 100644
index 00000000..f6e35a64
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-users.php
@@ -0,0 +1,209 @@
+ 404 )
+ );
+ }
+
+ if ( self::BLOG_USER_ID === $user_id ) {
+ return Blog_User::from_wp_user( $user_id );
+ } elseif ( self::APPLICATION_USER_ID === $user_id ) {
+ return Application_User::from_wp_user( $user_id );
+ } elseif ( $user_id > 0 ) {
+ return User::from_wp_user( $user_id );
+ }
+
+ return new WP_Error(
+ 'activitypub_user_not_found',
+ \__( 'User not found', 'activitypub' ),
+ array( 'status' => 404 )
+ );
+ }
+
+ /**
+ * Get the User by username.
+ *
+ * @param string $username The User-Name.
+ *
+ * @return \Acitvitypub\Model\User The User.
+ */
+ public static function get_by_username( $username ) {
+ // check for blog user.
+ if ( Blog_User::get_default_username() === $username ) {
+ return self::get_by_id( self::BLOG_USER_ID );
+ }
+
+ if ( get_option( 'activitypub_blog_user_identifier' ) === $username ) {
+ return self::get_by_id( self::BLOG_USER_ID );
+ }
+
+ // check for application user.
+ if ( 'application' === $username ) {
+ return self::get_by_id( self::APPLICATION_USER_ID );
+ }
+
+ // check for 'activitypub_username' meta
+ $user = new WP_User_Query(
+ array(
+ 'number' => 1,
+ 'hide_empty' => true,
+ 'fields' => 'ID',
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
+ 'meta_query' => array(
+ 'relation' => 'OR',
+ array(
+ 'key' => 'activitypub_user_identifier',
+ 'value' => $username,
+ 'compare' => 'LIKE',
+ ),
+ ),
+ )
+ );
+
+ if ( $user->results ) {
+ return self::get_by_id( $user->results[0] );
+ }
+
+ // check for login or nicename.
+ $user = new WP_User_Query(
+ array(
+ 'search' => $username,
+ 'search_columns' => array( 'user_login', 'user_nicename' ),
+ 'number' => 1,
+ 'hide_empty' => true,
+ 'fields' => 'ID',
+ )
+ );
+
+ if ( $user->results ) {
+ return self::get_by_id( $user->results[0] );
+ }
+
+ return new WP_Error(
+ 'activitypub_user_not_found',
+ \__( 'User not found', 'activitypub' ),
+ array( 'status' => 404 )
+ );
+ }
+
+ /**
+ * Get the User by resource.
+ *
+ * @param string $resource The User-Resource.
+ *
+ * @return \Acitvitypub\Model\User The User.
+ */
+ public static function get_by_resource( $resource ) {
+ if ( \strpos( $resource, '@' ) === false ) {
+ return new WP_Error(
+ 'activitypub_unsupported_resource',
+ \__( 'Resource is invalid', 'activitypub' ),
+ array( 'status' => 400 )
+ );
+ }
+
+ $resource = \str_replace( 'acct:', '', $resource );
+
+ $resource_identifier = \substr( $resource, 0, \strrpos( $resource, '@' ) );
+ $resource_host = self::normalize_host( \substr( \strrchr( $resource, '@' ), 1 ) );
+ $blog_host = self::normalize_host( \wp_parse_url( \home_url( '/' ), \PHP_URL_HOST ) );
+
+ if ( $blog_host !== $resource_host ) {
+ return new WP_Error(
+ 'activitypub_wrong_host',
+ \__( 'Resource host does not match blog host', 'activitypub' ),
+ array( 'status' => 404 )
+ );
+ }
+
+ return self::get_by_username( $resource_identifier );
+ }
+
+ /**
+ * Get the User by resource.
+ *
+ * @param string $resource The User-Resource.
+ *
+ * @return \Acitvitypub\Model\User The User.
+ */
+ public static function get_by_various( $id ) {
+ if ( is_numeric( $id ) ) {
+ return self::get_by_id( $id );
+ } elseif ( filter_var( $id, FILTER_VALIDATE_URL ) ) {
+ return self::get_by_resource( $id );
+ } else {
+ return self::get_by_username( $id );
+ }
+ }
+
+ /**
+ * Normalize the host.
+ *
+ * @param string $host The host.
+ *
+ * @return string The normalized host.
+ */
+ public static function normalize_host( $host ) {
+ return \str_replace( 'www.', '', $host );
+ }
+
+ /**
+ * Get the User collection.
+ *
+ * @return array The User collection.
+ */
+ public static function get_collection() {
+ $users = \get_users(
+ array(
+ 'capability__in' => array( 'publish_posts' ),
+ )
+ );
+
+ $return = array();
+
+ foreach ( $users as $user ) {
+ $return[] = User::from_wp_user( $user->ID );
+ }
+
+ return $return;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/compat.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/compat.php
new file mode 100644
index 00000000..c0996af8
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/compat.php
@@ -0,0 +1,49 @@
+ 404, 'actor' => $actor ) );
+ }
+
+ if ( is_wp_error( $actor ) ) {
+ return $actor;
+ }
+
+ $transient_key = 'activitypub_' . $actor;
+
+ // only check the cache if needed.
+ if ( $cached ) {
+ $metadata = \get_transient( $transient_key );
+
+ if ( $metadata ) {
+ return $metadata;
+ }
+ }
+
+ if ( ! \wp_http_validate_url( $actor ) ) {
+ $metadata = new WP_Error( 'activitypub_no_valid_actor_url', \__( 'The "actor" is no valid URL', 'activitypub' ), array( 'status' => 400, 'actor' => $actor ) );
+ return $metadata;
+ }
+
+ $response = Http::get( $actor );
+
+ if ( \is_wp_error( $response ) ) {
+ return $response;
+ }
+
+ $metadata = \wp_remote_retrieve_body( $response );
+ $metadata = \json_decode( $metadata, true );
+
+ if ( ! $metadata ) {
+ $metadata = new WP_Error( 'activitypub_invalid_json', \__( 'No valid JSON data', 'activitypub' ), array( 'status' => 400, 'actor' => $actor ) );
+ return $metadata;
+ }
+
+ \set_transient( $transient_key, $metadata, WEEK_IN_SECONDS );
+
+ return $metadata;
+}
+
+/**
+ * Returns the followers of a given user.
+ *
+ * @param int $user_id The User-ID.
+ *
+ * @return array The followers.
+ */
+function get_followers( $user_id ) {
+ return Followers::get_followers( $user_id );
+}
+
+/**
+ * Count the number of followers for a given user.
+ *
+ * @param int $user_id The User-ID.
+ *
+ * @return int The number of followers.
+ */
+function count_followers( $user_id ) {
+ return Followers::count_followers( $user_id );
+}
+
+/**
+ * Examine a url and try to determine the author ID it represents.
+ *
+ * Checks are supposedly from the hosted site blog.
+ *
+ * @param string $url Permalink to check.
+ *
+ * @return int User ID, or 0 on failure.
+ */
+function url_to_authorid( $url ) {
+ global $wp_rewrite;
+
+ // check if url hase the same host
+ if ( \wp_parse_url( \site_url(), \PHP_URL_HOST ) !== \wp_parse_url( $url, \PHP_URL_HOST ) ) {
+ return 0;
+ }
+
+ // first, check to see if there is a 'author=N' to match against
+ if ( \preg_match( '/[?&]author=(\d+)/i', $url, $values ) ) {
+ $id = \absint( $values[1] );
+ if ( $id ) {
+ return $id;
+ }
+ }
+
+ // check to see if we are using rewrite rules
+ $rewrite = $wp_rewrite->wp_rewrite_rules();
+
+ // not using rewrite rules, and 'author=N' method failed, so we're out of options
+ if ( empty( $rewrite ) ) {
+ return 0;
+ }
+
+ // generate rewrite rule for the author url
+ $author_rewrite = $wp_rewrite->get_author_permastruct();
+ $author_regexp = \str_replace( '%author%', '', $author_rewrite );
+
+ // match the rewrite rule with the passed url
+ if ( \preg_match( '/https?:\/\/(.+)' . \preg_quote( $author_regexp, '/' ) . '([^\/]+)/i', $url, $match ) ) {
+ $user = \get_user_by( 'slug', $match[2] );
+ if ( $user ) {
+ return $user->ID;
+ }
+ }
+
+ return 0;
+}
+
+/**
+ * Check for Tombstone Objects
+ *
+ * @see https://www.w3.org/TR/activitypub/#delete-activity-outbox
+ *
+ * @param WP_Error $wp_error A WP_Error-Response of an HTTP-Request
+ *
+ * @return boolean true if HTTP-Code is 410 or 404
+ */
+function is_tombstone( $wp_error ) {
+ if ( ! is_wp_error( $wp_error ) ) {
+ return false;
+ }
+
+ if ( in_array( (int) $wp_error->get_error_code(), array( 404, 410 ), true ) ) {
+ return true;
+ }
+
+ return false;
+}
+
+/**
+ * Get the REST URL relative to this plugin's namespace.
+ *
+ * @param string $path Optional. REST route path. Otherwise this plugin's namespaced root.
+ *
+ * @return string REST URL relative to this plugin's namespace.
+ */
+function get_rest_url_by_path( $path = '' ) {
+ // we'll handle the leading slash.
+ $path = ltrim( $path, '/' );
+ $namespaced_path = sprintf( '/%s/%s', ACTIVITYPUB_REST_NAMESPACE, $path );
+ return \get_rest_url( null, $namespaced_path );
+}
+
+/**
+ * Convert a string from camelCase to snake_case.
+ *
+ * @param string $string The string to convert.
+ *
+ * @return string The converted string.
+ */
+// phpcs:ignore Universal.NamingConventions.NoReservedKeywordParameterNames.stringFound
+function camel_to_snake_case( $string ) {
+ return strtolower( preg_replace( '/(?query_vars['activitypub'] ) ) {
+ return true;
+ }
+
+ /*
+ * The other (more common) option to make an ActivityPub request
+ * is to send an Accept header.
+ */
+ if ( isset( $_SERVER['HTTP_ACCEPT'] ) ) {
+ $accept = sanitize_text_field( wp_unslash( $_SERVER['HTTP_ACCEPT'] ) );
+
+ /*
+ * $accept can be a single value, or a comma separated list of values.
+ * We want to support both scenarios,
+ * and return true when the header includes at least one of the following:
+ * - application/activity+json
+ * - application/ld+json
+ * - application/json
+ */
+ if ( preg_match( '/(application\/(ld\+json|activity\+json|json))/i', $accept ) ) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+/**
+ * This function checks if a user is disabled for ActivityPub.
+ *
+ * @param int $user_id The User-ID.
+ *
+ * @return boolean True if the user is disabled, false otherwise.
+ */
+function is_user_disabled( $user_id ) {
+ $return = false;
+
+ switch ( $user_id ) {
+ // if the user is the application user, it's always enabled.
+ case \Activitypub\Collection\Users::APPLICATION_USER_ID:
+ $return = false;
+ break;
+ // if the user is the blog user, it's only enabled in single-user mode.
+ case \Activitypub\Collection\Users::BLOG_USER_ID:
+ if ( is_user_type_disabled( 'blog' ) ) {
+ $return = true;
+ break;
+ }
+
+ $return = false;
+ break;
+ // if the user is any other user, it's enabled if it can publish posts.
+ default:
+ if ( ! \get_user_by( 'id', $user_id ) ) {
+ $return = true;
+ break;
+ }
+
+ if ( is_user_type_disabled( 'user' ) ) {
+ $return = true;
+ break;
+ }
+
+ if ( ! \user_can( $user_id, 'publish_posts' ) ) {
+ $return = true;
+ break;
+ }
+
+ $return = false;
+ break;
+ }
+
+ return apply_filters( 'activitypub_is_user_disabled', $return, $user_id );
+}
+
+/**
+ * Checks if a User-Type is disabled for ActivityPub.
+ *
+ * This function is used to check if the 'blog' or 'user'
+ * type is disabled for ActivityPub.
+ *
+ * @param enum $type Can be 'blog' or 'user'.
+ *
+ * @return boolean True if the user type is disabled, false otherwise.
+ */
+function is_user_type_disabled( $type ) {
+ switch ( $type ) {
+ case 'blog':
+ if ( \defined( 'ACTIVITYPUB_SINGLE_USER_MODE' ) ) {
+ if ( ACTIVITYPUB_SINGLE_USER_MODE ) {
+ $return = false;
+ break;
+ }
+ }
+
+ if ( \defined( 'ACTIVITYPUB_DISABLE_BLOG_USER' ) ) {
+ $return = ACTIVITYPUB_DISABLE_BLOG_USER;
+ break;
+ }
+
+ if ( '1' !== \get_option( 'activitypub_enable_blog_user', '0' ) ) {
+ $return = true;
+ break;
+ }
+
+ $return = false;
+ break;
+ case 'user':
+ if ( \defined( 'ACTIVITYPUB_SINGLE_USER_MODE' ) ) {
+ if ( ACTIVITYPUB_SINGLE_USER_MODE ) {
+ $return = true;
+ break;
+ }
+ }
+
+ if ( \defined( 'ACTIVITYPUB_DISABLE_USER' ) ) {
+ $return = ACTIVITYPUB_DISABLE_USER;
+ break;
+ }
+
+ if ( '1' !== \get_option( 'activitypub_enable_users', '1' ) ) {
+ $return = true;
+ break;
+ }
+
+ $return = false;
+ break;
+ default:
+ $return = new WP_Error( 'activitypub_wrong_user_type', __( 'Wrong user type', 'activitypub' ), array( 'status' => 400 ) );
+ break;
+ }
+
+ return apply_filters( 'activitypub_is_user_type_disabled', $return, $type );
+}
+
+/**
+ * Check if the blog is in single-user mode.
+ *
+ * @return boolean True if the blog is in single-user mode, false otherwise.
+ */
+function is_single_user() {
+ if (
+ false === is_user_type_disabled( 'blog' ) &&
+ true === is_user_type_disabled( 'user' )
+ ) {
+ return true;
+ }
+
+ return false;
+}
+
+/**
+ * Check if a site supports the block editor.
+ *
+ * @return boolean True if the site supports the block editor, false otherwise.
+ */
+function site_supports_blocks() {
+ if ( \version_compare( \get_bloginfo( 'version' ), '5.9', '<' ) ) {
+ return false;
+ }
+
+ if ( ! \function_exists( 'register_block_type_from_metadata' ) ) {
+ return false;
+ }
+
+ /**
+ * Allow plugins to disable block editor support,
+ * thus disabling blocks registered by the ActivityPub plugin.
+ *
+ * @param boolean $supports_blocks True if the site supports the block editor, false otherwise.
+ */
+ return apply_filters( 'activitypub_site_supports_blocks', true );
+}
+
+/**
+ * Check if data is valid JSON.
+ *
+ * @param string $data The data to check.
+ *
+ * @return boolean True if the data is JSON, false otherwise.
+ */
+function is_json( $data ) {
+ return \is_array( \json_decode( $data, true ) ) ? true : false;
+}
+
+/**
+ * Check if a blog is public based on the `blog_public` option
+ *
+ * @return bollean True if public, false if not
+ */
+function is_blog_public() {
+ return (bool) apply_filters( 'activitypub_is_blog_public', \get_option( 'blog_public', 1 ) );
+}
+
+/**
+ * Sanitize a URL
+ *
+ * @param string $value The URL to sanitize
+ *
+ * @return string|null The sanitized URL or null if invalid
+ */
+function sanitize_url( $value ) {
+ if ( filter_var( $value, FILTER_VALIDATE_URL ) === false ) {
+ return null;
+ }
+
+ return esc_url_raw( $value );
+}
+
+/**
+ * Extract recipient URLs from Activity object
+ *
+ * @param array $data
+ *
+ * @return array The list of user URLs
+ */
+function extract_recipients_from_activity( $data ) {
+ $recipient_items = array();
+
+ foreach ( array( 'to', 'bto', 'cc', 'bcc', 'audience' ) as $i ) {
+ if ( array_key_exists( $i, $data ) ) {
+ if ( is_array( $data[ $i ] ) ) {
+ $recipient = $data[ $i ];
+ } else {
+ $recipient = array( $data[ $i ] );
+ }
+ $recipient_items = array_merge( $recipient_items, $recipient );
+ }
+
+ if ( is_array( $data['object'] ) && array_key_exists( $i, $data['object'] ) ) {
+ if ( is_array( $data['object'][ $i ] ) ) {
+ $recipient = $data['object'][ $i ];
+ } else {
+ $recipient = array( $data['object'][ $i ] );
+ }
+ $recipient_items = array_merge( $recipient_items, $recipient );
+ }
+ }
+
+ $recipients = array();
+
+ // flatten array
+ foreach ( $recipient_items as $recipient ) {
+ if ( is_array( $recipient ) ) {
+ // check if recipient is an object
+ if ( array_key_exists( 'id', $recipient ) ) {
+ $recipients[] = $recipient['id'];
+ }
+ } else {
+ $recipients[] = $recipient;
+ }
+ }
+
+ return array_unique( $recipients );
+}
+
+/**
+ * Check if passed Activity is Public
+ *
+ * @param array $data The Activity object as array
+ *
+ * @return boolean True if public, false if not
+ */
+function is_activity_public( $data ) {
+ $recipients = extract_recipients_from_activity( $data );
+
+ return in_array( 'https://www.w3.org/ns/activitystreams#Public', $recipients, true );
+}
+
+/**
+ * Get active users based on a given duration
+ *
+ * @param int $duration The duration to check in month(s)
+ *
+ * @return int The number of active users
+ */
+function get_active_users( $duration = 1 ) {
+
+ $duration = intval( $duration );
+ $transient_key = sprintf( 'monthly_active_users_%d', $duration );
+ $count = get_transient( $transient_key );
+
+ if ( false === $count ) {
+ global $wpdb;
+ $query = "SELECT COUNT( DISTINCT post_author ) FROM {$wpdb->posts} WHERE post_type = 'post' AND post_status = 'publish' AND post_date <= DATE_SUB( NOW(), INTERVAL %d MONTH )";
+ $query = $wpdb->prepare( $query, $duration );
+ $count = $wpdb->get_var( $query ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery
+
+ set_transient( $transient_key, $count, DAY_IN_SECONDS );
+ }
+
+ // if 0 authors where active
+ if ( 0 === $count ) {
+ return 0;
+ }
+
+ // if single user mode
+ if ( is_single_user() ) {
+ return 1;
+ }
+
+ // if blog user is disabled
+ if ( is_user_disabled( Users::BLOG_USER_ID ) ) {
+ return $count;
+ }
+
+ // also count blog user
+ return $count + 1;
+}
+
+/**
+ * Get the total number of users
+ *
+ * @return int The total number of users
+ */
+function get_total_users() {
+ // if single user mode
+ if ( is_single_user() ) {
+ return 1;
+ }
+
+ $users = \get_users(
+ array(
+ 'capability__in' => array( 'publish_posts' ),
+ )
+ );
+
+ if ( is_array( $users ) ) {
+ $users = count( $users );
+ } else {
+ $users = 1;
+ }
+
+ // if blog user is disabled
+ if ( is_user_disabled( Users::BLOG_USER_ID ) ) {
+ return $users;
+ }
+
+ return $users + 1;
+}
+
+/**
+ * Examine a comment ID and look up an existing comment it represents.
+ *
+ * @param string $id ActivityPub object ID (usually a URL) to check.
+ *
+ * @return int|boolean Comment ID, or false on failure.
+ */
+function object_id_to_comment( $id ) {
+ $comment_query = new WP_Comment_Query(
+ array(
+ 'meta_key' => 'source_id', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
+ 'meta_value' => $id, // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
+ )
+ );
+
+ if ( ! $comment_query->comments ) {
+ return false;
+ }
+
+ if ( count( $comment_query->comments ) > 1 ) {
+ return false;
+ }
+
+ return $comment_query->comments[0];
+}
+
+/**
+ * Verify if URL is a local comment,
+ * Or if it is a previously received remote comment
+ * (For threading comments locally)
+ *
+ * @param string $url The URL to check.
+ *
+ * @return int comment_ID or null if not found
+ */
+function url_to_commentid( $url ) {
+ if ( ! $url || ! filter_var( $url, FILTER_VALIDATE_URL ) ) {
+ return null;
+ }
+
+ $args = array(
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
+ 'meta_query' => array(
+ 'relation' => 'OR',
+ array(
+ 'key' => 'source_url',
+ 'value' => $url,
+ ),
+ array(
+ 'key' => 'source_id',
+ 'value' => $url,
+ ),
+ ),
+ );
+
+ $query = new \WP_Comment_Query();
+ $comments = $query->query( $args );
+
+ if ( $comments && is_array( $comments ) ) {
+ return $comments[0]->comment_ID;
+ }
+
+ return null;
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-create.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-create.php
new file mode 100644
index 00000000..2e5d76ad
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-create.php
@@ -0,0 +1,61 @@
+delete();
+ }
+ }
+
+ /**
+ * Delete Reactions if Actor-URL is a Tombstone.
+ *
+ * @param array $activity The delete activity.
+ */
+ public static function maybe_delete_interactions( $activity ) {
+ // verify if Actor is deleted.
+ if ( Http::is_tombstone( $activity['actor'] ) ) {
+ \wp_schedule_single_event(
+ \time(),
+ 'activitypub_delete_actor_interactions',
+ array( $activity['actor'] )
+ );
+ }
+ }
+
+ /**
+ * Delete comments from an Actor.
+ *
+ * @param array $comments The comments to delete.
+ */
+ public static function delete_interactions( $actor ) {
+ $comments = Interactions::get_interactions_by_actor( $actor );
+
+ if ( is_array( $comments ) ) {
+ foreach ( $comments as $comment ) {
+ wp_delete_comment( $comment->comment_ID );
+ }
+ }
+ }
+
+ /**
+ * Delete a Reaction if URL is a Tombstone.
+ *
+ * @param array $activity The delete activity.
+ *
+ * @return void
+ */
+ public static function maybe_delete_interaction( $activity ) {
+ if ( is_array( $activity['object'] ) ) {
+ $id = $activity['object']['id'];
+ } else {
+ $id = $activity['object'];
+ }
+
+ $comments = Interactions::get_interaction_by_id( $id );
+
+ if ( $comments && Http::is_tombstone( $id ) ) {
+ foreach ( $comments as $comment ) {
+ wp_delete_comment( $comment->comment_ID, true );
+ }
+ }
+ }
+
+ /**
+ * Defer signature verification for `Delete` requests.
+ *
+ * @param bool $defer Whether to defer signature verification.
+ * @param WP_REST_Request $request The request object.
+ *
+ * @return bool Whether to defer signature verification.
+ */
+ public static function defer_signature_verification( $defer, $request ) {
+ $json = $request->get_json_params();
+
+ if ( isset( $json['type'] ) && 'Delete' === $json['type'] ) {
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-follow.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-follow.php
new file mode 100644
index 00000000..6855dbd8
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-follow.php
@@ -0,0 +1,81 @@
+get_shared_inbox();
+
+ // send "Accept" activity
+ $activity = new Activity();
+ $activity->set_type( 'Accept' );
+ $activity->set_object( $object );
+ $activity->set_actor( $user->get_id() );
+ $activity->set_to( $actor );
+ $activity->set_id( $user->get_id() . '#follow-' . \preg_replace( '~^https?://~', '', $actor ) . '-' . \time() );
+
+ $activity = $activity->to_json();
+
+ Http::post( $inbox, $activity, $user_id );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-undo.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-undo.php
new file mode 100644
index 00000000..13c06f3d
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-undo.php
@@ -0,0 +1,31 @@
+add_help_tab(
+ array(
+ 'id' => 'template-tags',
+ 'title' => \__( 'Template Tags', 'activitypub' ),
+ 'content' =>
+ '' . __( 'The following Template Tags are available:', 'activitypub' ) . '
' .
+ '' .
+ '[ap_title]
' .
+ '' . \wp_kses( __( 'The post\'s title.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_content apply_filters="yes"]
' .
+ '' . \wp_kses( __( 'The post\'s content. With apply_filters
you can decide if filters (apply_filters( \'the_content\', $content )
) should be applied or not (default is yes
). The values can be yes
or no
. apply_filters
attribute is optional.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_excerpt length="400"]
' .
+ '' . \wp_kses( __( 'The post\'s excerpt (uses the_excerpt
if that is set). If no excerpt is provided, will truncate at length
(optional, default = 400).', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_permalink type="url"]
' .
+ '' . \wp_kses( __( 'The post\'s permalink. type
can be either: url
or html
(an <a /> tag). type
attribute is optional.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_shortlink type="url"]
' .
+ '' . \wp_kses( __( 'The post\'s shortlink. type
can be either url
or html
(an <a /> tag). I can recommend Hum , to prettify the Shortlinks. type
attribute is optional.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_hashtags]
' .
+ '' . \wp_kses( __( 'The post\'s tags as hashtags.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_hashcats]
' .
+ '' . \wp_kses( __( 'The post\'s categories as hashtags.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_image type=full]
' .
+ '' . \wp_kses( __( 'The URL for the post\'s featured image, defaults to full size. The type attribute can be any of the following: thumbnail
, medium
, large
, full
. type
attribute is optional.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_author]
' .
+ '' . \wp_kses( __( 'The author\'s name.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_authorurl]
' .
+ '' . \wp_kses( __( 'The URL to the author\'s profile page.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_date]
' .
+ '' . \wp_kses( __( 'The post\'s date.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_time]
' .
+ '' . \wp_kses( __( 'The post\'s time.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_datetime]
' .
+ '' . \wp_kses( __( 'The post\'s date/time formated as "date @ time".', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_blogurl]
' .
+ '' . \wp_kses( __( 'The URL to the site.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_blogname]
' .
+ '' . \wp_kses( __( 'The name of the site.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ '[ap_blogdesc]
' .
+ '' . \wp_kses( __( 'The description of the site.', 'activitypub' ), array( 'code' => array() ) ) . ' ' .
+ ' ' .
+ '' . __( 'You may also use any Shortcode normally available to you on your site, however be aware that Shortcodes may significantly increase the size of your content depending on what they do.', 'activitypub' ) . '
' .
+ '' . __( 'Note: the old Template Tags are now deprecated and automatically converted to the new ones.', 'activitypub' ) . '
' .
+ '' . \wp_kses( \__( 'Let me know if you miss a Template Tag.', 'activitypub' ), 'activitypub' ) . '
',
+ )
+);
+
+\get_current_screen()->add_help_tab(
+ array(
+ 'id' => 'glossary',
+ 'title' => \__( 'Glossary', 'activitypub' ),
+ 'content' =>
+ '
' . \__( 'Fediverse', 'activitypub' ) . '
' .
+ '' . \__( 'The Fediverse is a new word made of two words: "federation" + "universe"', 'activitypub' ) . '
' .
+ '' . \__( 'It is a federated social network running on free open software on a myriad of computers across the globe. Many independent servers are interconnected and allow people to interact with one another. There\'s no one central site: you choose a server to register. This ensures some decentralization and sovereignty of data. Fediverse (also called Fedi) has no built-in advertisements, no tricky algorithms, no one big corporation dictating the rules. Instead we have small cozy communities of like-minded people. Welcome!', 'activitypub' ) . '
' .
+ '' . \__( 'For more informations please visit fediverse.party ', 'activitypub' ) . '
' .
+ '
' . \__( 'ActivityPub', 'activitypub' ) . ' ' .
+ '' . \__( 'ActivityPub is a decentralized social networking protocol based on the ActivityStreams 2.0 data format. ActivityPub is an official W3C recommended standard published by the W3C Social Web Working Group. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and subscribing to content.', 'activitypub' ) . '
' .
+ '
' . \__( 'WebFinger', 'activitypub' ) . ' ' .
+ '' . \__( 'WebFinger is used to discover information about people or other entities on the Internet that are identified by a URI using standard Hypertext Transfer Protocol (HTTP) methods over a secure transport. A WebFinger resource returns a JavaScript Object Notation (JSON) object describing the entity that is queried. The JSON object is referred to as the JSON Resource Descriptor (JRD).', 'activitypub' ) . '
' .
+ '' . \__( 'For a person, the type of information that might be discoverable via WebFinger includes a personal profile address, identity service, telephone number, or preferred avatar. For other entities on the Internet, a WebFinger resource might return JRDs containing link relations that enable a client to discover, for example, that a printer can print in color on A4 paper, the physical location of a server, or other static information.', 'activitypub' ) . '
' .
+ '' . \__( 'On Mastodon [and other Plattforms], user profiles can be hosted either locally on the same website as yours, or remotely on a completely different website. The same username may be used on a different domain. Therefore, a Mastodon user\'s full mention consists of both the username and the domain, in the form @username@domain
. In practical terms, @user@example.com
is not the same as @user@example.org
. If the domain is not included, Mastodon will try to find a local user named @username
. However, in order to deliver to someone over ActivityPub, the @username@domain
mention is not enough – mentions must be translated to an HTTPS URI first, so that the remote actor\'s inbox and outbox can be found. (This paragraph is copied from the Mastodon Documentation )', 'activitypub' ) . '
' .
+ '' . \__( 'For more informations please visit webfinger.net ', 'activitypub' ) . '
' .
+ '
' . \__( 'NodeInfo', 'activitypub' ) . ' ' .
+ '' . \__( 'NodeInfo is an effort to create a standardized way of exposing metadata about a server running one of the distributed social networks. The two key goals are being able to get better insights into the user base of distributed social networking and the ability to build tools that allow users to choose the best fitting software and server for their needs.', 'activitypub' ) . '
' .
+ '' . \__( 'For more informations please visit nodeinfo.diaspora.software ', 'activitypub' ) . '
',
+ )
+);
+
+\get_current_screen()->set_help_sidebar(
+ '' . \__( 'For more information:', 'activitypub' ) . '
' .
+ '' . \__( 'Get support ', 'activitypub' ) . '
' .
+ '' . \__( 'Report an issue ', 'activitypub' ) . '
'
+);
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-application-user.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-application-user.php
new file mode 100644
index 00000000..cf4d9cc4
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-application-user.php
@@ -0,0 +1,72 @@
+ 404 )
+ );
+ }
+
+ $object = new static();
+ $object->_id = $user_id;
+
+ return $object;
+ }
+
+ /**
+ * Get the type of the object.
+ *
+ * If the Blog is in "single user" mode, return "Person" insted of "Group".
+ *
+ * @return string The type of the object.
+ */
+ public function get_type() {
+ if ( is_single_user() ) {
+ return 'Person';
+ } else {
+ return 'Group';
+ }
+ }
+
+ /**
+ * Get the User-Name.
+ *
+ * @return string The User-Name.
+ */
+ public function get_name() {
+ return \wp_strip_all_tags(
+ \html_entity_decode(
+ \get_bloginfo( 'name' ),
+ \ENT_QUOTES,
+ 'UTF-8'
+ )
+ );
+ }
+
+ /**
+ * Get the User-Description.
+ *
+ * @return string The User-Description.
+ */
+ public function get_summary() {
+ return \wpautop(
+ \wp_kses(
+ \get_bloginfo( 'description' ),
+ 'default'
+ )
+ );
+ }
+
+ /**
+ * Get the User-Url.
+ *
+ * @return string The User-Url.
+ */
+ public function get_url() {
+ return \esc_url( \trailingslashit( get_home_url() ) . '@' . $this->get_preferred_username() );
+ }
+
+ /**
+ * Returns the User-URL with @-Prefix for the username.
+ *
+ * @return string The User-URL with @-Prefix for the username.
+ */
+ public function get_at_url() {
+ return \esc_url( \trailingslashit( get_home_url() ) . '@' . $this->get_preferred_username() );
+ }
+
+ /**
+ * Generate a default Username.
+ *
+ * @return string The auto-generated Username.
+ */
+ public static function get_default_username() {
+ // check if domain host has a subdomain
+ $host = \wp_parse_url( \get_home_url(), \PHP_URL_HOST );
+ $host = \preg_replace( '/^www\./i', '', $host );
+
+ /**
+ * Filter the default blog username.
+ *
+ * @param string $host The default username.
+ */
+ return apply_filters( 'activitypub_default_blog_username', $host );
+ }
+
+ /**
+ * Get the preferred User-Name.
+ *
+ * @return string The User-Name.
+ */
+ public function get_preferred_username() {
+ $username = \get_option( 'activitypub_blog_user_identifier' );
+
+ if ( $username ) {
+ return $username;
+ }
+
+ return self::get_default_username();
+ }
+
+ /**
+ * Get the User-Icon.
+ *
+ * @return array The User-Icon.
+ */
+ public function get_icon() {
+ // try site icon first
+ $icon_id = get_option( 'site_icon' );
+
+ // try custom logo second
+ if ( ! $icon_id ) {
+ $icon_id = get_theme_mod( 'custom_logo' );
+ }
+
+ $icon_url = false;
+
+ if ( $icon_id ) {
+ $icon = wp_get_attachment_image_src( $icon_id, 'full' );
+ if ( $icon ) {
+ $icon_url = $icon[0];
+ }
+ }
+
+ if ( ! $icon_url ) {
+ // fallback to default icon
+ $icon_url = plugins_url( '/assets/img/wp-logo.png', ACTIVITYPUB_PLUGIN_FILE );
+ }
+
+ return array(
+ 'type' => 'Image',
+ 'url' => esc_url( $icon_url ),
+ );
+ }
+
+ /**
+ * Get the User-Header-Image.
+ *
+ * @return array|null The User-Header-Image.
+ */
+ public function get_header_image() {
+ if ( \has_header_image() ) {
+ return array(
+ 'type' => 'Image',
+ 'url' => esc_url( \get_header_image() ),
+ );
+ }
+
+ return null;
+ }
+
+ public function get_published() {
+ $first_post = new WP_Query(
+ array(
+ 'orderby' => 'date',
+ 'order' => 'ASC',
+ 'number' => 1,
+ )
+ );
+
+ if ( ! empty( $first_post->posts[0] ) ) {
+ $time = \strtotime( $first_post->posts[0]->post_date_gmt );
+ } else {
+ $time = \time();
+ }
+
+ return \gmdate( 'Y-m-d\TH:i:s\Z', $time );
+ }
+
+ public function get_attachment() {
+ return array();
+ }
+
+ public function get_canonical_url() {
+ return \home_url();
+ }
+
+ public function get_moderators() {
+ if ( is_single_user() || 'Group' !== $this->get_type() ) {
+ return null;
+ }
+
+ return get_rest_url_by_path( 'collections/moderators' );
+ }
+
+ public function get_attributed_to() {
+ if ( is_single_user() || 'Group' !== $this->get_type() ) {
+ return null;
+ }
+
+ return get_rest_url_by_path( 'collections/moderators' );
+ }
+
+ public function get_posting_restricted_to_mods() {
+ if ( 'Group' === $this->get_type() ) {
+ return true;
+ }
+
+ return null;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-follower.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-follower.php
new file mode 100644
index 00000000..b2833e9c
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-follower.php
@@ -0,0 +1,366 @@
+_id, 'activitypub_errors' );
+ }
+
+ /**
+ * Get the Summary.
+ *
+ * @return int The Summary.
+ */
+ public function get_summary() {
+ if ( isset( $this->summary ) ) {
+ return $this->summary;
+ }
+
+ return '';
+ }
+
+ /**
+ * Getter for URL attribute.
+ *
+ * Falls back to ID, if no URL is set. This is relevant for
+ * Plattforms like Lemmy, where the ID is the URL.
+ *
+ * @return string The URL.
+ */
+ public function get_url() {
+ if ( $this->url ) {
+ return $this->url;
+ }
+
+ return $this->id;
+ }
+
+ /**
+ * Reset (delete) all errors.
+ *
+ * @return void
+ */
+ public function reset_errors() {
+ delete_post_meta( $this->_id, 'activitypub_errors' );
+ }
+
+ /**
+ * Count the errors.
+ *
+ * @return int The number of errors.
+ */
+ public function count_errors() {
+ $errors = $this->get_errors();
+
+ if ( is_array( $errors ) && ! empty( $errors ) ) {
+ return count( $errors );
+ }
+
+ return 0;
+ }
+
+ /**
+ * Return the latest error message.
+ *
+ * @return string The error message.
+ */
+ public function get_latest_error_message() {
+ $errors = $this->get_errors();
+
+ if ( is_array( $errors ) && ! empty( $errors ) ) {
+ return reset( $errors );
+ }
+
+ return '';
+ }
+
+ /**
+ * Update the current Follower-Object.
+ *
+ * @return void
+ */
+ public function update() {
+ $this->save();
+ }
+
+ /**
+ * Validate the current Follower-Object.
+ *
+ * @return boolean True if the verification was successful.
+ */
+ public function is_valid() {
+ // the minimum required attributes
+ $required_attributes = array(
+ 'id',
+ 'preferredUsername',
+ 'inbox',
+ 'publicKey',
+ 'publicKeyPem',
+ );
+
+ foreach ( $required_attributes as $attribute ) {
+ if ( ! $this->get( $attribute ) ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Save the current Follower-Object.
+ *
+ * @return int|WP_Error The Post-ID or an WP_Error.
+ */
+ public function save() {
+ if ( ! $this->is_valid() ) {
+ return new WP_Error( 'activitypub_invalid_follower', __( 'Invalid Follower', 'activitypub' ), array( 'status' => 400 ) );
+ }
+
+ if ( ! $this->get__id() ) {
+ global $wpdb;
+
+ // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching
+ $post_id = $wpdb->get_var(
+ $wpdb->prepare(
+ "SELECT ID FROM $wpdb->posts WHERE guid=%s",
+ esc_sql( $this->get_id() )
+ )
+ );
+
+ if ( $post_id ) {
+ $post = get_post( $post_id );
+ $this->set__id( $post->ID );
+ }
+ }
+
+ $args = array(
+ 'ID' => $this->get__id(),
+ 'guid' => esc_url_raw( $this->get_id() ),
+ 'post_title' => wp_strip_all_tags( sanitize_text_field( $this->get_name() ) ),
+ 'post_author' => 0,
+ 'post_type' => Followers::POST_TYPE,
+ 'post_name' => esc_url_raw( $this->get_id() ),
+ 'post_excerpt' => sanitize_text_field( wp_kses( $this->get_summary(), 'user_description' ) ),
+ 'post_status' => 'publish',
+ 'meta_input' => $this->get_post_meta_input(),
+ );
+
+ $post_id = wp_insert_post( $args );
+ $this->_id = $post_id;
+
+ return $post_id;
+ }
+
+ /**
+ * Upsert the current Follower-Object.
+ *
+ * @return int|WP_Error The Post-ID or an WP_Error.
+ */
+ public function upsert() {
+ return $this->save();
+ }
+
+ /**
+ * Delete the current Follower-Object.
+ *
+ * Beware that this os deleting a Follower for ALL users!!!
+ *
+ * To delete only the User connection (unfollow)
+ * @see \Activitypub\Rest\Followers::remove_follower()
+ *
+ * @return void
+ */
+ public function delete() {
+ wp_delete_post( $this->_id );
+ }
+
+ /**
+ * Update the post meta.
+ *
+ * @return void
+ */
+ protected function get_post_meta_input() {
+ $meta_input = array();
+ $meta_input['activitypub_inbox'] = $this->get_shared_inbox();
+ $meta_input['activitypub_actor_json'] = $this->to_json();
+
+ return $meta_input;
+ }
+
+ /**
+ * Get the icon.
+ *
+ * Sets a fallback to better handle API and HTML outputs.
+ *
+ * @return array The icon.
+ */
+ public function get_icon() {
+ if ( isset( $this->icon['url'] ) ) {
+ return $this->icon;
+ }
+
+ return array(
+ 'type' => 'Image',
+ 'mediaType' => 'image/jpeg',
+ 'url' => ACTIVITYPUB_PLUGIN_URL . 'assets/img/mp.jpg',
+ );
+ }
+
+ /**
+ * Get Name.
+ *
+ * Tries to extract a name from the URL or ID if not set.
+ *
+ * @return string The name.
+ */
+ public function get_name() {
+ if ( $this->name ) {
+ return $this->name;
+ } elseif ( $this->preferred_username ) {
+ return $this->preferred_username;
+ }
+
+ return $this->extract_name_from_uri();
+ }
+
+ /**
+ * The preferred Username.
+ *
+ * Tries to extract a name from the URL or ID if not set.
+ *
+ * @return string The preferred Username.
+ */
+ public function get_preferred_username() {
+ if ( $this->preferred_username ) {
+ return $this->preferred_username;
+ }
+
+ return $this->extract_name_from_uri();
+ }
+
+ /**
+ * Get the Icon URL (Avatar)
+ *
+ * @return string The URL to the Avatar.
+ */
+ public function get_icon_url() {
+ $icon = $this->get_icon();
+
+ if ( ! $icon ) {
+ return '';
+ }
+
+ if ( is_array( $icon ) ) {
+ return $icon['url'];
+ }
+
+ return $icon;
+ }
+
+ /**
+ * Get the shared inbox, with a fallback to the inbox.
+ *
+ * @return string|null The URL to the shared inbox, the inbox or null.
+ */
+ public function get_shared_inbox() {
+ if ( ! empty( $this->get_endpoints()['sharedInbox'] ) ) {
+ return $this->get_endpoints()['sharedInbox'];
+ } elseif ( ! empty( $this->get_inbox() ) ) {
+ return $this->get_inbox();
+ }
+
+ return null;
+ }
+
+ /**
+ * Convert a Custom-Post-Type input to an Activitypub\Model\Follower.
+ *
+ * @return string The JSON string.
+ *
+ * @return array Activitypub\Model\Follower
+ */
+ public static function init_from_cpt( $post ) {
+ $actor_json = get_post_meta( $post->ID, 'activitypub_actor_json', true );
+ $object = self::init_from_json( $actor_json );
+ $object->set__id( $post->ID );
+ $object->set_id( $post->guid );
+ $object->set_name( $post->post_title );
+ $object->set_summary( $post->post_excerpt );
+ $object->set_published( gmdate( 'Y-m-d H:i:s', strtotime( $post->post_date ) ) );
+ $object->set_updated( gmdate( 'Y-m-d H:i:s', strtotime( $post->post_modified ) ) );
+
+ return $object;
+ }
+
+ /**
+ * Infer a shortname from the Actor ID or URL. Used only for fallbacks,
+ * we will try to use what's supplied.
+ *
+ * @return string Hopefully the name of the Follower.
+ */
+ protected function extract_name_from_uri() {
+ // prefer the URL, but fall back to the ID.
+ if ( $this->url ) {
+ $name = $this->url;
+ } else {
+ $name = $this->id;
+ }
+
+ if ( \filter_var( $name, FILTER_VALIDATE_URL ) ) {
+ $name = \rtrim( $name, '/' );
+ $path = \wp_parse_url( $name, PHP_URL_PATH );
+
+ if ( $path ) {
+ if ( \strpos( $name, '@' ) !== false ) {
+ // expected: https://example.com/@user (default URL pattern)
+ $name = \preg_replace( '|^/@?|', '', $path );
+ } else {
+ // expected: https://example.com/users/user (default ID pattern)
+ $parts = \explode( '/', $path );
+ $name = \array_pop( $parts );
+ }
+ }
+ } elseif (
+ \is_email( $name ) ||
+ \strpos( $name, 'acct' ) === 0 ||
+ \strpos( $name, '@' ) === 0
+ ) {
+ // expected: user@example.com or acct:user@example (WebFinger)
+ $name = \ltrim( $name, '@' );
+ $name = \ltrim( $name, 'acct:' );
+ $parts = \explode( '@', $name );
+ $name = $parts[0];
+ }
+
+ return $name;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-post.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-post.php
new file mode 100644
index 00000000..d967ad9a
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-post.php
@@ -0,0 +1,131 @@
+post = $post;
+ $this->object = Post_Transformer::transform( $post )->to_object();
+ }
+
+ /**
+ * Returns the User ID.
+ *
+ * @return int the User ID.
+ */
+ public function get_user_id() {
+ return apply_filters( 'activitypub_post_user_id', $this->post->post_author, $this->post );
+ }
+
+ /**
+ * Converts this Object into an Array.
+ *
+ * @return array the array representation of a Post.
+ */
+ public function to_array() {
+ return \apply_filters( 'activitypub_post', $this->object->to_array(), $this->post );
+ }
+
+ /**
+ * Returns the Actor of this Object.
+ *
+ * @return string The URL of the Actor.
+ */
+ public function get_actor() {
+ $user = User_Factory::get_by_id( $this->get_user_id() );
+
+ return $user->get_url();
+ }
+
+ /**
+ * Converts this Object into a JSON String
+ *
+ * @return string
+ */
+ public function to_json() {
+ return \wp_json_encode( $this->to_array(), \JSON_HEX_TAG | \JSON_HEX_AMP | \JSON_HEX_QUOT );
+ }
+
+ /**
+ * Returns the URL of an Activity Object
+ *
+ * @return string
+ */
+ public function get_url() {
+ return $this->object->get_url();
+ }
+
+ /**
+ * Returns the ID of an Activity Object
+ *
+ * @return string
+ */
+ public function get_id() {
+ return $this->object->get_id();
+ }
+
+ /**
+ * Returns a list of Image Attachments
+ *
+ * @return array
+ */
+ public function get_attachments() {
+ return $this->object->get_attachment();
+ }
+
+ /**
+ * Returns a list of Tags, used in the Post
+ *
+ * @return array
+ */
+ public function get_tags() {
+ return $this->object->get_tag();
+ }
+
+ /**
+ * Returns the as2 object-type for a given post
+ *
+ * @return string the object-type
+ */
+ public function get_object_type() {
+ return $this->object->get_type();
+ }
+
+ /**
+ * Returns the content for the ActivityPub Item.
+ *
+ * @return string the content
+ */
+ public function get_content() {
+ return $this->object->get_content();
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-user.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-user.php
new file mode 100644
index 00000000..95c83d73
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-user.php
@@ -0,0 +1,300 @@
+
+ */
+ protected $resource;
+
+ /**
+ * Restrict posting to mods
+ *
+ * @see https://join-lemmy.org/docs/contributors/05-federation.html
+ *
+ * @var boolean
+ */
+ protected $posting_restricted_to_mods = null;
+
+ public static function from_wp_user( $user_id ) {
+ if ( is_user_disabled( $user_id ) ) {
+ return new WP_Error(
+ 'activitypub_user_not_found',
+ \__( 'User not found', 'activitypub' ),
+ array( 'status' => 404 )
+ );
+ }
+
+ $object = new static();
+ $object->_id = $user_id;
+
+ return $object;
+ }
+
+ /**
+ * Get the User-ID.
+ *
+ * @return string The User-ID.
+ */
+ public function get_id() {
+ return $this->get_url();
+ }
+
+ /**
+ * Get the User-Name.
+ *
+ * @return string The User-Name.
+ */
+ public function get_name() {
+ return \esc_attr( \get_the_author_meta( 'display_name', $this->_id ) );
+ }
+
+ /**
+ * Get the User-Description.
+ *
+ * @return string The User-Description.
+ */
+ public function get_summary() {
+ $description = get_user_meta( $this->_id, 'activitypub_user_description', true );
+ if ( empty( $description ) ) {
+ $description = get_user_meta( $this->_id, 'description', true );
+ }
+ return \wpautop( \wp_kses( $description, 'default' ) );
+ }
+
+ /**
+ * Get the User-Url.
+ *
+ * @return string The User-Url.
+ */
+ public function get_url() {
+ return \esc_url( \get_author_posts_url( $this->_id ) );
+ }
+
+ /**
+ * Returns the User-URL with @-Prefix for the username.
+ *
+ * @return string The User-URL with @-Prefix for the username.
+ */
+ public function get_at_url() {
+ return \esc_url( \trailingslashit( get_home_url() ) . '@' . $this->get_username() );
+ }
+
+ public function get_preferred_username() {
+ return \esc_attr( \get_the_author_meta( 'login', $this->_id ) );
+ }
+
+ public function get_icon() {
+ $icon = \esc_url(
+ \get_avatar_url(
+ $this->_id,
+ array( 'size' => 120 )
+ )
+ );
+
+ return array(
+ 'type' => 'Image',
+ 'url' => $icon,
+ );
+ }
+
+ public function get_image() {
+ if ( \has_header_image() ) {
+ $image = \esc_url( \get_header_image() );
+ return array(
+ 'type' => 'Image',
+ 'url' => $image,
+ );
+ }
+
+ return null;
+ }
+
+ public function get_published() {
+ return \gmdate( 'Y-m-d\TH:i:s\Z', \strtotime( \get_the_author_meta( 'registered', $this->_id ) ) );
+ }
+
+ public function get_public_key() {
+ return array(
+ 'id' => $this->get_id() . '#main-key',
+ 'owner' => $this->get_id(),
+ 'publicKeyPem' => Signature::get_public_key_for( $this->get__id() ),
+ );
+ }
+
+ /**
+ * Returns the Inbox-API-Endpoint.
+ *
+ * @return string The Inbox-Endpoint.
+ */
+ public function get_inbox() {
+ return get_rest_url_by_path( sprintf( 'users/%d/inbox', $this->get__id() ) );
+ }
+
+ /**
+ * Returns the Outbox-API-Endpoint.
+ *
+ * @return string The Outbox-Endpoint.
+ */
+ public function get_outbox() {
+ return get_rest_url_by_path( sprintf( 'users/%d/outbox', $this->get__id() ) );
+ }
+
+ /**
+ * Returns the Followers-API-Endpoint.
+ *
+ * @return string The Followers-Endpoint.
+ */
+ public function get_followers() {
+ return get_rest_url_by_path( sprintf( 'users/%d/followers', $this->get__id() ) );
+ }
+
+ /**
+ * Returns the Following-API-Endpoint.
+ *
+ * @return string The Following-Endpoint.
+ */
+ public function get_following() {
+ return get_rest_url_by_path( sprintf( 'users/%d/following', $this->get__id() ) );
+ }
+
+ /**
+ * Returns the Featured-API-Endpoint.
+ *
+ * @return string The Featured-Endpoint.
+ */
+ public function get_featured() {
+ return get_rest_url_by_path( sprintf( 'users/%d/collections/featured', $this->get__id() ) );
+ }
+
+ /**
+ * Extend the User-Output with Attachments.
+ *
+ * @return array The extended User-Output.
+ */
+ public function get_attachment() {
+ $array = array();
+
+ $array[] = array(
+ 'type' => 'PropertyValue',
+ 'name' => \__( 'Blog', 'activitypub' ),
+ 'value' => \html_entity_decode(
+ '' . \wp_parse_url( \home_url( '/' ), \PHP_URL_HOST ) . ' ',
+ \ENT_QUOTES,
+ 'UTF-8'
+ ),
+ );
+
+ $array[] = array(
+ 'type' => 'PropertyValue',
+ 'name' => \__( 'Profile', 'activitypub' ),
+ 'value' => \html_entity_decode(
+ '' . \wp_parse_url( \get_author_posts_url( $this->get__id() ), \PHP_URL_HOST ) . ' ',
+ \ENT_QUOTES,
+ 'UTF-8'
+ ),
+ );
+
+ if ( \get_the_author_meta( 'user_url', $this->get__id() ) ) {
+ $array[] = array(
+ 'type' => 'PropertyValue',
+ 'name' => \__( 'Website', 'activitypub' ),
+ 'value' => \html_entity_decode(
+ '' . \wp_parse_url( \get_the_author_meta( 'user_url', $this->get__id() ), \PHP_URL_HOST ) . ' ',
+ \ENT_QUOTES,
+ 'UTF-8'
+ ),
+ );
+ }
+
+ return $array;
+ }
+
+ /**
+ * Returns a user@domain type of identifier for the user.
+ *
+ * @return string The Webfinger-Identifier.
+ */
+ public function get_resource() {
+ return $this->get_preferred_username() . '@' . \wp_parse_url( \home_url(), \PHP_URL_HOST );
+ }
+
+ public function get_canonical_url() {
+ return $this->get_url();
+ }
+
+ public function get_streams() {
+ return null;
+ }
+
+ public function get_tag() {
+ return array();
+ }
+
+ public function get_indexable() {
+ if ( \get_option( 'blog_public', 1 ) ) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/peer/class-followers.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/peer/class-followers.php
new file mode 100644
index 00000000..e0e6ddba
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/peer/class-followers.php
@@ -0,0 +1,34 @@
+[\w\-\.]+)/collections/tags',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'tags_get' ),
+ 'args' => self::request_parameters(),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+
+ \register_rest_route(
+ ACTIVITYPUB_REST_NAMESPACE,
+ '/users/(?P[\w\-\.]+)/collections/featured',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'featured_get' ),
+ 'args' => self::request_parameters(),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+
+ \register_rest_route(
+ ACTIVITYPUB_REST_NAMESPACE,
+ '/collections/moderators',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'moderators_get' ),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+ }
+
+ /**
+ * The Featured Tags endpoint
+ *
+ * @param WP_REST_Request $request The request object.
+ *
+ * @return WP_REST_Response The response object.
+ */
+ public static function tags_get( $request ) {
+ $user_id = $request->get_param( 'user_id' );
+ $user = User_Collection::get_by_various( $user_id );
+
+ if ( is_wp_error( $user ) ) {
+ return $user;
+ }
+
+ $number = 4;
+
+ $tags = \get_terms(
+ array(
+ 'taxonomy' => 'post_tag',
+ 'orderby' => 'count',
+ 'order' => 'DESC',
+ 'number' => $number,
+ )
+ );
+
+ if ( is_wp_error( $tags ) ) {
+ $tags = array();
+ }
+
+ $response = array(
+ '@context' => Activity::CONTEXT,
+ 'id' => get_rest_url_by_path( sprintf( 'users/%d/collections/tags', $user->get__id() ) ),
+ 'type' => 'Collection',
+ 'totalItems' => is_countable( $tags ) ? count( $tags ) : 0,
+ 'items' => array(),
+ );
+
+ foreach ( $tags as $tag ) {
+ $response['items'][] = array(
+ 'type' => 'Hashtag',
+ 'href' => \esc_url( \get_tag_link( $tag ) ),
+ 'name' => esc_hashtag( $tag->name ),
+ );
+ }
+
+ $rest_response = new WP_REST_Response( $response, 200 );
+ $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . get_option( 'blog_charset' ) );
+
+ return $rest_response;
+ }
+
+ /**
+ * Featured posts endpoint
+ *
+ * @param WP_REST_Request $request The request object.
+ *
+ * @return WP_REST_Response The response object.
+ */
+ public static function featured_get( $request ) {
+ $user_id = $request->get_param( 'user_id' );
+ $user = User_Collection::get_by_various( $user_id );
+
+ if ( is_wp_error( $user ) ) {
+ return $user;
+ }
+
+ $sticky_posts = \get_option( 'sticky_posts' );
+
+ if ( ! is_single_user() && User_Collection::BLOG_USER_ID === $user->get__id() ) {
+ $posts = array();
+ } elseif ( $sticky_posts ) {
+ $args = array(
+ 'post__in' => $sticky_posts,
+ 'ignore_sticky_posts' => 1,
+ 'orderby' => 'date',
+ 'order' => 'DESC',
+ );
+
+ if ( $user->get__id() > 0 ) {
+ $args['author'] = $user->get__id();
+ }
+
+ $posts = \get_posts( $args );
+ } else {
+ $posts = array();
+ }
+
+ $response = array(
+ '@context' => Activity::CONTEXT,
+ 'id' => get_rest_url_by_path( sprintf( 'users/%d/collections/featured', $user_id ) ),
+ 'type' => 'OrderedCollection',
+ 'totalItems' => is_countable( $posts ) ? count( $posts ) : 0,
+ 'orderedItems' => array(),
+ );
+
+ foreach ( $posts as $post ) {
+ $response['orderedItems'][] = Post::transform( $post )->to_object()->to_array();
+ }
+
+ $rest_response = new WP_REST_Response( $response, 200 );
+ $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . get_option( 'blog_charset' ) );
+
+ return $rest_response;
+ }
+
+ /**
+ * Moderators endpoint
+ *
+ * @param WP_REST_Request $request The request object.
+ *
+ * @return WP_REST_Response The response object.
+ */
+ public static function moderators_get( $request ) {
+ $response = array(
+ '@context' => Activity::CONTEXT,
+ 'id' => get_rest_url_by_path( 'collections/moderators' ),
+ 'type' => 'OrderedCollection',
+ 'orderedItems' => array(),
+ );
+
+ $users = User_Collection::get_collection();
+
+ foreach ( $users as $user ) {
+ $response['orderedItems'][] = $user->get_url();
+ }
+
+ $rest_response = new WP_REST_Response( $response, 200 );
+ $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . get_option( 'blog_charset' ) );
+
+ return $rest_response;
+ }
+
+ /**
+ * The supported parameters
+ *
+ * @return array list of parameters
+ */
+ public static function request_parameters() {
+ $params = array();
+
+ $params['user_id'] = array(
+ 'required' => true,
+ 'type' => 'string',
+ );
+
+ return $params;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-followers.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-followers.php
new file mode 100644
index 00000000..71e48400
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-followers.php
@@ -0,0 +1,149 @@
+[\w\-\.]+)/followers',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'get' ),
+ 'args' => self::request_parameters(),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+ }
+
+ /**
+ * Handle GET request
+ *
+ * @param WP_REST_Request $request
+ *
+ * @return WP_REST_Response
+ */
+ public static function get( $request ) {
+ $user_id = $request->get_param( 'user_id' );
+ $user = User_Collection::get_by_various( $user_id );
+
+ if ( is_wp_error( $user ) ) {
+ return $user;
+ }
+
+ $order = $request->get_param( 'order' );
+ $per_page = (int) $request->get_param( 'per_page' );
+ $page = (int) $request->get_param( 'page' );
+ $context = $request->get_param( 'context' );
+
+ /*
+ * Action triggerd prior to the ActivityPub profile being created and sent to the client
+ */
+ \do_action( 'activitypub_rest_followers_pre' );
+
+ $data = Follower_Collection::get_followers_with_count( $user_id, $per_page, $page, array( 'order' => ucwords( $order ) ) );
+ $json = new stdClass();
+
+ $json->{'@context'} = \Activitypub\get_context();
+
+ $json->id = get_rest_url_by_path( sprintf( 'users/%d/followers', $user->get__id() ) );
+ $json->generator = 'http://wordpress.org/?v=' . \get_bloginfo_rss( 'version' );
+ $json->actor = $user->get_id();
+ $json->type = 'OrderedCollectionPage';
+
+ $json->totalItems = $data['total']; // phpcs:ignore
+ $json->partOf = get_rest_url_by_path( sprintf( 'users/%d/followers', $user->get__id() ) ); // phpcs:ignore
+
+ $json->first = \add_query_arg( 'page', 1, $json->partOf ); // phpcs:ignore
+ $json->last = \add_query_arg( 'page', \ceil ( $json->totalItems / $per_page ), $json->partOf ); // phpcs:ignore
+
+ if ( $page && ( ( \ceil ( $json->totalItems / $per_page ) ) > $page ) ) { // phpcs:ignore
+ $json->next = \add_query_arg( 'page', $page + 1, $json->partOf ); // phpcs:ignore
+ }
+
+ if ( $page && ( $page > 1 ) ) { // phpcs:ignore
+ $json->prev = \add_query_arg( 'page', $page - 1, $json->partOf ); // phpcs:ignore
+ }
+
+ // phpcs:ignore
+ $json->orderedItems = array_map(
+ function( $item ) use ( $context ) {
+ if ( 'full' === $context ) {
+ return $item->to_array();
+ }
+ return $item->get_url();
+ },
+ $data['followers']
+ );
+
+ $rest_response = new WP_REST_Response( $json, 200 );
+ $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . get_option( 'blog_charset' ) );
+
+ return $rest_response;
+ }
+
+ /**
+ * The supported parameters
+ *
+ * @return array list of parameters
+ */
+ public static function request_parameters() {
+ $params = array();
+
+ $params['page'] = array(
+ 'type' => 'integer',
+ 'default' => 1,
+ );
+
+ $params['per_page'] = array(
+ 'type' => 'integer',
+ 'default' => 20,
+ );
+
+ $params['order'] = array(
+ 'type' => 'string',
+ 'default' => 'desc',
+ 'enum' => array( 'asc', 'desc' ),
+ );
+
+ $params['user_id'] = array(
+ 'required' => true,
+ 'type' => 'string',
+ );
+
+ $params['context'] = array(
+ 'type' => 'string',
+ 'default' => 'simple',
+ 'enum' => array( 'simple', 'full' ),
+ );
+
+ return $params;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-following.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-following.php
new file mode 100644
index 00000000..58e4375c
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-following.php
@@ -0,0 +1,131 @@
+[\w\-\.]+)/following',
+ array(
+ array(
+ 'methods' => \WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'get' ),
+ 'args' => self::request_parameters(),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+ }
+
+ /**
+ * Handle GET request
+ *
+ * @param WP_REST_Request $request
+ *
+ * @return WP_REST_Response
+ */
+ public static function get( $request ) {
+ $user_id = $request->get_param( 'user_id' );
+ $user = User_Collection::get_by_various( $user_id );
+
+ if ( is_wp_error( $user ) ) {
+ return $user;
+ }
+
+ /*
+ * Action triggerd prior to the ActivityPub profile being created and sent to the client
+ */
+ \do_action( 'activitypub_rest_following_pre' );
+
+ $json = new \stdClass();
+
+ $json->{'@context'} = \Activitypub\get_context();
+
+ $json->id = get_rest_url_by_path( sprintf( 'users/%d/following', $user->get__id() ) );
+ $json->generator = 'http://wordpress.org/?v=' . \get_bloginfo_rss( 'version' );
+ $json->actor = $user->get_id();
+ $json->type = 'OrderedCollectionPage';
+
+ $json->partOf = get_rest_url_by_path( sprintf( 'users/%d/following', $user->get__id() ) ); // phpcs:ignore
+
+ $items = apply_filters( 'activitypub_rest_following', array(), $user ); // phpcs:ignore
+
+ $json->totalItems = is_countable( $items ) ? count( $items ) : 0; // phpcs:ignore
+ $json->orderedItems = $items; // phpcs:ignore
+
+ $json->first = $json->partOf; // phpcs:ignore
+
+ $rest_response = new WP_REST_Response( $json, 200 );
+ $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . get_option( 'blog_charset' ) );
+
+ return $rest_response;
+ }
+
+ /**
+ * The supported parameters
+ *
+ * @return array list of parameters
+ */
+ public static function request_parameters() {
+ $params = array();
+
+ $params['page'] = array(
+ 'type' => 'integer',
+ );
+
+ $params['user_id'] = array(
+ 'required' => true,
+ 'type' => 'string',
+ );
+
+ return $params;
+ }
+
+ /**
+ * Add the Blog Authors to the following list of the Blog Actor
+ * if Blog not in single mode.
+ *
+ * @param array $array The array of following urls.
+ * @param User $user The user object.
+ *
+ * @return array The array of following urls.
+ */
+ public static function default_following( $array, $user ) {
+ if ( 0 !== $user->get__id() || is_single_user() ) {
+ return $array;
+ }
+
+ $users = User_Collection::get_collection();
+
+ foreach ( $users as $user ) {
+ $array[] = $user->get_url();
+ }
+
+ return $array;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-inbox.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-inbox.php
new file mode 100644
index 00000000..d38ffb51
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-inbox.php
@@ -0,0 +1,367 @@
+ WP_REST_Server::CREATABLE,
+ 'callback' => array( self::class, 'shared_inbox_post' ),
+ 'args' => self::shared_inbox_post_parameters(),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+
+ \register_rest_route(
+ ACTIVITYPUB_REST_NAMESPACE,
+ '/users/(?P[\w\-\.]+)/inbox',
+ array(
+ array(
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'callback' => array( self::class, 'user_inbox_post' ),
+ 'args' => self::user_inbox_post_parameters(),
+ 'permission_callback' => '__return_true',
+ ),
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'user_inbox_get' ),
+ 'args' => self::user_inbox_get_parameters(),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+ }
+
+ /**
+ * Renders the user-inbox
+ *
+ * @param WP_REST_Request $request
+ * @return WP_REST_Response
+ */
+ public static function user_inbox_get( $request ) {
+ $user_id = $request->get_param( 'user_id' );
+ $user = User_Collection::get_by_various( $user_id );
+
+ if ( is_wp_error( $user ) ) {
+ return $user;
+ }
+
+ $page = $request->get_param( 'page', 0 );
+
+ /*
+ * Action triggerd prior to the ActivityPub profile being created and sent to the client
+ */
+ \do_action( 'activitypub_rest_inbox_pre' );
+
+ $json = new \stdClass();
+
+ $json->{'@context'} = get_context();
+ $json->id = get_rest_url_by_path( sprintf( 'users/%d/inbox', $user->get__id() ) );
+ $json->generator = 'http://wordpress.org/?v=' . \get_bloginfo_rss( 'version' );
+ $json->type = 'OrderedCollectionPage';
+ $json->partOf = get_rest_url_by_path( sprintf( 'users/%d/inbox', $user->get__id() ) ); // phpcs:ignore
+
+ $json->totalItems = 0; // phpcs:ignore
+
+ $json->orderedItems = array(); // phpcs:ignore
+
+ $json->first = $json->partOf; // phpcs:ignore
+
+ // filter output
+ $json = \apply_filters( 'activitypub_rest_inbox_array', $json );
+
+ /*
+ * Action triggerd after the ActivityPub profile has been created and sent to the client
+ */
+ \do_action( 'activitypub_inbox_post' );
+
+ $rest_response = new WP_REST_Response( $json, 200 );
+ $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . get_option( 'blog_charset' ) );
+
+ return $rest_response;
+ }
+
+ /**
+ * Handles user-inbox requests
+ *
+ * @param WP_REST_Request $request
+ *
+ * @return WP_REST_Response
+ */
+ public static function user_inbox_post( $request ) {
+ $user_id = $request->get_param( 'user_id' );
+ $user = User_Collection::get_by_various( $user_id );
+
+ if ( is_wp_error( $user ) ) {
+ return $user;
+ }
+
+ $data = $request->get_json_params();
+ $activity = Activity::init_from_array( $data );
+ $type = $request->get_param( 'type' );
+ $type = \strtolower( $type );
+
+ \do_action( 'activitypub_inbox', $data, $user->get__id(), $type, $activity );
+ \do_action( "activitypub_inbox_{$type}", $data, $user->get__id(), $activity );
+
+ $rest_response = new WP_REST_Response( array(), 202 );
+ $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . get_option( 'blog_charset' ) );
+
+ return $rest_response;
+ }
+
+ /**
+ * The shared inbox
+ *
+ * @param WP_REST_Request $request
+ *
+ * @return WP_REST_Response
+ */
+ public static function shared_inbox_post( $request ) {
+ $data = $request->get_json_params();
+ $activity = Activity::init_from_array( $data );
+ $type = $request->get_param( 'type' );
+ $users = self::get_recipients( $data );
+
+ if ( ! $users ) {
+ return new WP_Error(
+ 'rest_invalid_param',
+ \__( 'No recipients found', 'activitypub' ),
+ array(
+ 'status' => 400,
+ 'params' => array(
+ 'to' => \__( 'Please check/validate "to" field', 'activitypub' ),
+ 'bto' => \__( 'Please check/validate "bto" field', 'activitypub' ),
+ 'cc' => \__( 'Please check/validate "cc" field', 'activitypub' ),
+ 'bcc' => \__( 'Please check/validate "bcc" field', 'activitypub' ),
+ 'audience' => \__( 'Please check/validate "audience" field', 'activitypub' ),
+ ),
+ )
+ );
+ }
+
+ foreach ( $users as $user ) {
+ $user = User_Collection::get_by_various( $user );
+
+ if ( is_wp_error( $user ) ) {
+ continue;
+ }
+
+ $type = \strtolower( $type );
+
+ \do_action( 'activitypub_inbox', $data, $user->ID, $type, $activity );
+ \do_action( "activitypub_inbox_{$type}", $data, $user->ID, $activity );
+ }
+
+ $rest_response = new WP_REST_Response( array(), 202 );
+ $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . get_option( 'blog_charset' ) );
+
+ return $rest_response;
+ }
+
+ /**
+ * The supported parameters
+ *
+ * @return array list of parameters
+ */
+ public static function user_inbox_get_parameters() {
+ $params = array();
+
+ $params['page'] = array(
+ 'type' => 'integer',
+ );
+
+ $params['user_id'] = array(
+ 'required' => true,
+ 'type' => 'string',
+ );
+
+ return $params;
+ }
+
+ /**
+ * The supported parameters
+ *
+ * @return array list of parameters
+ */
+ public static function user_inbox_post_parameters() {
+ $params = array();
+
+ $params['page'] = array(
+ 'type' => 'integer',
+ );
+
+ $params['user_id'] = array(
+ 'required' => true,
+ 'type' => 'string',
+ );
+
+ $params['id'] = array(
+ 'required' => true,
+ 'sanitize_callback' => 'esc_url_raw',
+ );
+
+ $params['actor'] = array(
+ 'required' => true,
+ 'sanitize_callback' => function( $param, $request, $key ) {
+ if ( \is_array( $param ) ) {
+ if ( isset( $param['id'] ) ) {
+ $param = $param['id'];
+ } else {
+ $param = $param['url'];
+ }
+ }
+ return \esc_url_raw( $param );
+ },
+ );
+
+ $params['type'] = array(
+ 'required' => true,
+ //'type' => 'enum',
+ //'enum' => array( 'Create' ),
+ //'sanitize_callback' => function( $param, $request, $key ) {
+ // return \strtolower( $param );
+ //},
+ );
+
+ $params['object'] = array(
+ 'required' => true,
+ );
+
+ return $params;
+ }
+
+ /**
+ * The supported parameters
+ *
+ * @return array list of parameters
+ */
+ public static function shared_inbox_post_parameters() {
+ $params = array();
+
+ $params['page'] = array(
+ 'type' => 'integer',
+ );
+
+ $params['id'] = array(
+ 'required' => true,
+ 'type' => 'string',
+ 'sanitize_callback' => 'esc_url_raw',
+ );
+
+ $params['actor'] = array(
+ 'required' => true,
+ //'type' => array( 'object', 'string' ),
+ 'sanitize_callback' => function( $param, $request, $key ) {
+ if ( ! \is_string( $param ) ) {
+ $param = $param['id'];
+ }
+ return \esc_url_raw( $param );
+ },
+ );
+
+ $params['type'] = array(
+ 'required' => true,
+ //'type' => 'enum',
+ //'enum' => array( 'Create' ),
+ //'sanitize_callback' => function( $param, $request, $key ) {
+ // return \strtolower( $param );
+ //},
+ );
+
+ $params['object'] = array(
+ 'required' => true,
+ //'type' => 'object',
+ );
+
+ $params['to'] = array(
+ 'required' => false,
+ 'sanitize_callback' => function( $param, $request, $key ) {
+ if ( \is_string( $param ) ) {
+ $param = array( $param );
+ }
+
+ return $param;
+ },
+ );
+
+ $params['cc'] = array(
+ 'sanitize_callback' => function( $param, $request, $key ) {
+ if ( \is_string( $param ) ) {
+ $param = array( $param );
+ }
+
+ return $param;
+ },
+ );
+
+ $params['bcc'] = array(
+ 'sanitize_callback' => function( $param, $request, $key ) {
+ if ( \is_string( $param ) ) {
+ $param = array( $param );
+ }
+
+ return $param;
+ },
+ );
+
+ return $params;
+ }
+
+ /**
+ * Get local user recipients
+ *
+ * @param array $data
+ *
+ * @return array The list of local users
+ */
+ public static function get_recipients( $data ) {
+ $recipients = extract_recipients_from_activity( $data );
+ $users = array();
+
+ foreach ( $recipients as $recipient ) {
+ $user_id = url_to_authorid( $recipient );
+
+ $user = get_user_by( 'id', $user_id );
+
+ if ( $user ) {
+ $users[] = $user;
+ }
+ }
+
+ return $users;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-nodeinfo.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-nodeinfo.php
new file mode 100644
index 00000000..62151fff
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-nodeinfo.php
@@ -0,0 +1,176 @@
+ \WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'discovery' ),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+
+ \register_rest_route(
+ ACTIVITYPUB_REST_NAMESPACE,
+ '/nodeinfo',
+ array(
+ array(
+ 'methods' => \WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'nodeinfo' ),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+
+ \register_rest_route(
+ ACTIVITYPUB_REST_NAMESPACE,
+ '/nodeinfo2',
+ array(
+ array(
+ 'methods' => \WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'nodeinfo2' ),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+ }
+
+ /**
+ * Render NodeInfo file
+ *
+ * @param WP_REST_Request $request
+ *
+ * @return WP_REST_Response
+ */
+ public static function nodeinfo( $request ) {
+ /*
+ * Action triggerd prior to the ActivityPub profile being created and sent to the client
+ */
+ \do_action( 'activitypub_rest_nodeinfo_pre' );
+
+ $nodeinfo = array();
+
+ $nodeinfo['version'] = '2.0';
+ $nodeinfo['software'] = array(
+ 'name' => 'wordpress',
+ 'version' => \get_bloginfo( 'version' ),
+ );
+
+ $posts = \wp_count_posts();
+ $comments = \wp_count_comments();
+
+ $nodeinfo['usage'] = array(
+ 'users' => array(
+ 'total' => get_total_users(),
+ 'activeMonth' => get_active_users( '1 month ago' ),
+ 'activeHalfyear' => get_active_users( '6 month ago' ),
+ ),
+ 'localPosts' => (int) $posts->publish,
+ 'localComments' => (int) $comments->approved,
+ );
+
+ $nodeinfo['openRegistrations'] = false;
+ $nodeinfo['protocols'] = array( 'activitypub' );
+
+ $nodeinfo['services'] = array(
+ 'inbound' => array(),
+ 'outbound' => array(),
+ );
+
+ return new WP_REST_Response( $nodeinfo, 200 );
+ }
+
+ /**
+ * Render NodeInfo file
+ *
+ * @param WP_REST_Request $request
+ *
+ * @return WP_REST_Response
+ */
+ public static function nodeinfo2( $request ) {
+ /*
+ * Action triggerd prior to the ActivityPub profile being created and sent to the client
+ */
+ \do_action( 'activitypub_rest_nodeinfo2_pre' );
+
+ $nodeinfo = array();
+
+ $nodeinfo['version'] = '1.0';
+ $nodeinfo['server'] = array(
+ 'baseUrl' => \home_url( '/' ),
+ 'name' => \get_bloginfo( 'name' ),
+ 'software' => 'wordpress',
+ 'version' => \get_bloginfo( 'version' ),
+ );
+
+ $posts = \wp_count_posts();
+ $comments = \wp_count_comments();
+
+ $nodeinfo['usage'] = array(
+ 'users' => array(
+ 'total' => get_total_users(),
+ 'activeMonth' => get_active_users( 1 ),
+ 'activeHalfyear' => get_active_users( 6 ),
+ ),
+ 'localPosts' => (int) $posts->publish,
+ 'localComments' => (int) $comments->approved,
+ );
+
+ $nodeinfo['openRegistrations'] = false;
+ $nodeinfo['protocols'] = array( 'activitypub' );
+
+ $nodeinfo['services'] = array(
+ 'inbound' => array(),
+ 'outbound' => array(),
+ );
+
+ return new WP_REST_Response( $nodeinfo, 200 );
+ }
+
+ /**
+ * Render NodeInfo discovery file
+ *
+ * @param WP_REST_Request $request
+ *
+ * @return WP_REST_Response
+ */
+ public static function discovery( $request ) {
+ $discovery = array();
+ $discovery['links'] = array(
+ array(
+ 'rel' => 'http://nodeinfo.diaspora.software/ns/schema/2.0',
+ 'href' => get_rest_url_by_path( 'nodeinfo' ),
+ ),
+ );
+
+ return new \WP_REST_Response( $discovery, 200 );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-outbox.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-outbox.php
new file mode 100644
index 00000000..d640d173
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-outbox.php
@@ -0,0 +1,152 @@
+[\w\-\.]+)/outbox',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'user_outbox_get' ),
+ 'args' => self::request_parameters(),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+ }
+
+ /**
+ * Renders the user-outbox
+ *
+ * @param WP_REST_Request $request
+ * @return WP_REST_Response
+ */
+ public static function user_outbox_get( $request ) {
+ $user_id = $request->get_param( 'user_id' );
+ $user = User_Collection::get_by_various( $user_id );
+
+ if ( is_wp_error( $user ) ) {
+ return $user;
+ }
+
+ $post_types = \get_option( 'activitypub_support_post_types', array( 'post', 'page' ) );
+
+ $page = $request->get_param( 'page', 1 );
+
+ /*
+ * Action triggerd prior to the ActivityPub profile being created and sent to the client
+ */
+ \do_action( 'activitypub_rest_outbox_pre' );
+
+ $json = new stdClass();
+
+ $json->{'@context'} = get_context();
+ $json->id = get_rest_url_by_path( sprintf( 'users/%d/outbox', $user_id ) );
+ $json->generator = 'http://wordpress.org/?v=' . \get_bloginfo_rss( 'version' );
+ $json->actor = $user->get_id();
+ $json->type = 'OrderedCollectionPage';
+ $json->partOf = get_rest_url_by_path( sprintf( 'users/%d/outbox', $user_id ) ); // phpcs:ignore
+ $json->totalItems = 0; // phpcs:ignore
+
+ foreach ( $post_types as $post_type ) {
+ $count_posts = \wp_count_posts( $post_type );
+ $json->totalItems += \intval( $count_posts->publish ); // phpcs:ignore
+ }
+
+ $json->first = \add_query_arg( 'page', 1, $json->partOf ); // phpcs:ignore
+ $json->last = \add_query_arg( 'page', \ceil ( $json->totalItems / 10 ), $json->partOf ); // phpcs:ignore
+
+ if ( $page && ( ( \ceil ( $json->totalItems / 10 ) ) > $page ) ) { // phpcs:ignore
+ $json->next = \add_query_arg( 'page', $page + 1, $json->partOf ); // phpcs:ignore
+ }
+
+ if ( $page && ( $page > 1 ) ) { // phpcs:ignore
+ $json->prev = \add_query_arg( 'page', $page - 1, $json->partOf ); // phpcs:ignore
+ }
+
+ if ( $page ) {
+ $posts = \get_posts(
+ array(
+ 'posts_per_page' => 10,
+ 'author' => $user_id,
+ 'paged' => $page,
+ 'post_type' => $post_types,
+ )
+ );
+
+ foreach ( $posts as $post ) {
+ $post = Post::transform( $post )->to_object();
+ $activity = new Activity();
+ $activity->set_type( 'Create' );
+ $activity->set_context( null );
+ $activity->set_object( $post );
+
+ $json->orderedItems[] = $activity->to_array(); // phpcs:ignore
+ }
+ }
+
+ // filter output
+ $json = \apply_filters( 'activitypub_rest_outbox_array', $json );
+
+ /*
+ * Action triggerd after the ActivityPub profile has been created and sent to the client
+ */
+ \do_action( 'activitypub_outbox_post' );
+
+ $rest_response = new WP_REST_Response( $json, 200 );
+ $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . get_option( 'blog_charset' ) );
+
+ return $rest_response;
+ }
+
+ /**
+ * The supported parameters
+ *
+ * @return array list of parameters
+ */
+ public static function request_parameters() {
+ $params = array();
+
+ $params['page'] = array(
+ 'type' => 'integer',
+ 'default' => 1,
+ );
+
+ $params['user_id'] = array(
+ 'required' => true,
+ 'type' => 'string',
+ );
+
+ return $params;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-server.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-server.php
new file mode 100644
index 00000000..1bad5a73
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-server.php
@@ -0,0 +1,132 @@
+ \WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'application_actor' ),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+ }
+
+ /**
+ * Render Application actor profile
+ *
+ * @return WP_REST_Response The JSON profile of the Application Actor.
+ */
+ public static function application_actor() {
+ $user = new Application_User();
+
+ $user->set_context(
+ \Activitypub\Activity\Activity::CONTEXT
+ );
+
+ $json = $user->to_array();
+
+ $rest_response = new WP_REST_Response( $json, 200 );
+ $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . get_option( 'blog_charset' ) );
+
+ return $rest_response;
+ }
+
+ /**
+ * Callback function to authorize each api requests
+ *
+ * @see WP_REST_Request
+ *
+ * @param WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response Result to send to the client.
+ * Usually a WP_REST_Response or WP_Error.
+ * @param array $handler Route handler used for the request.
+ * @param WP_REST_Request $request Request used to generate the response.
+ *
+ * @return mixed|WP_Error The response, error, or modified response.
+ */
+ public static function authorize_activitypub_requests( $response, $handler, $request ) {
+ if ( 'HEAD' === $request->get_method() ) {
+ return $response;
+ }
+
+ $route = $request->get_route();
+
+ // check if it is an activitypub request and exclude webfinger and nodeinfo endpoints
+ if (
+ ! \str_starts_with( $route, '/' . ACTIVITYPUB_REST_NAMESPACE ) ||
+ \str_starts_with( $route, '/' . \trailingslashit( ACTIVITYPUB_REST_NAMESPACE ) . 'webfinger' ) ||
+ \str_starts_with( $route, '/' . \trailingslashit( ACTIVITYPUB_REST_NAMESPACE ) . 'nodeinfo' )
+ ) {
+ return $response;
+ }
+
+ /**
+ * Filter to defer signature verification
+ *
+ * Skip signature verification for debugging purposes or to reduce load for
+ * certain Activity-Types, like "Delete".
+ *
+ * @param bool $defer Whether to defer signature verification.
+ * @param WP_REST_Request $request The request used to generate the response.
+ *
+ * @return bool Whether to defer signature verification.
+ */
+ $defer = \apply_filters( 'activitypub_defer_signature_verification', false, $request );
+
+ if ( $defer ) {
+ return $response;
+ }
+
+ // POST-Requets are always signed
+ if ( 'GET' !== $request->get_method() ) {
+ $verified_request = Signature::verify_http_signature( $request );
+ if ( \is_wp_error( $verified_request ) ) {
+ return new WP_Error(
+ 'activitypub_signature_verification',
+ $verified_request->get_error_message(),
+ array( 'status' => 401 )
+ );
+ }
+ } elseif ( 'GET' === $request->get_method() && ACTIVITYPUB_AUTHORIZED_FETCH ) { // GET-Requests are only signed in secure mode
+ $verified_request = Signature::verify_http_signature( $request );
+ if ( \is_wp_error( $verified_request ) ) {
+ return new WP_Error(
+ 'activitypub_signature_verification',
+ $verified_request->get_error_message(),
+ array( 'status' => 401 )
+ );
+ }
+ }
+
+ return $response;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-users.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-users.php
new file mode 100644
index 00000000..9fb10bab
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-users.php
@@ -0,0 +1,155 @@
+[\w\-\.]+)',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'get' ),
+ 'args' => self::request_parameters(),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+
+ \register_rest_route(
+ ACTIVITYPUB_REST_NAMESPACE,
+ '/users/(?P[\w\-\.]+)/remote-follow',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'remote_follow_get' ),
+
+ 'args' => array(
+ 'resource' => array(
+ 'required' => true,
+ 'sanitize_callback' => 'sanitize_text_field',
+ ),
+ ),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+ }
+
+ /**
+ * Handle GET request
+ *
+ * @param WP_REST_Request $request
+ *
+ * @return WP_REST_Response
+ */
+ public static function get( $request ) {
+ $user_id = $request->get_param( 'user_id' );
+ $user = User_Collection::get_by_various( $user_id );
+
+ if ( is_wp_error( $user ) ) {
+ return $user;
+ }
+
+ // redirect to canonical URL if it is not an ActivityPub request
+ if ( ! is_activitypub_request() ) {
+ header( 'Location: ' . $user->get_canonical_url(), true, 301 );
+ exit;
+ }
+
+ /*
+ * Action triggerd prior to the ActivityPub profile being created and sent to the client
+ */
+ \do_action( 'activitypub_rest_users_pre' );
+
+ $user->set_context(
+ Activity::CONTEXT
+ );
+
+ $json = $user->to_array();
+
+ $rest_response = new WP_REST_Response( $json, 200 );
+ $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . get_option( 'blog_charset' ) );
+
+ return $rest_response;
+ }
+
+
+ /**
+ * Endpoint for remote follow UI/Block
+ *
+ * @param WP_REST_Request $request The request object.
+ *
+ * @return void|string The URL to the remote follow page
+ */
+ public static function remote_follow_get( WP_REST_Request $request ) {
+ $resource = $request->get_param( 'resource' );
+ $user_id = $request->get_param( 'user_id' );
+ $user = User_Collection::get_by_various( $user_id );
+
+ if ( is_wp_error( $user ) ) {
+ return $user;
+ }
+
+ $template = Webfinger::get_remote_follow_endpoint( $resource );
+
+ if ( is_wp_error( $template ) ) {
+ return $template;
+ }
+
+ $resource = $user->get_resource();
+ $url = str_replace( '{uri}', $resource, $template );
+
+ return new WP_REST_Response(
+ array( 'url' => $url ),
+ 200
+ );
+ }
+
+ /**
+ * The supported parameters
+ *
+ * @return array list of parameters
+ */
+ public static function request_parameters() {
+ $params = array();
+
+ $params['page'] = array(
+ 'type' => 'string',
+ );
+
+ $params['user_id'] = array(
+ 'required' => true,
+ 'type' => 'string',
+ );
+
+ return $params;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-webfinger.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-webfinger.php
new file mode 100644
index 00000000..34ae3929
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-webfinger.php
@@ -0,0 +1,124 @@
+ \WP_REST_Server::READABLE,
+ 'callback' => array( self::class, 'webfinger' ),
+ 'args' => self::request_parameters(),
+ 'permission_callback' => '__return_true',
+ ),
+ )
+ );
+ }
+
+ /**
+ * WebFinger endpoint.
+ *
+ * @param WP_REST_Request $request The request object.
+ *
+ * @return WP_REST_Response The response object.
+ */
+ public static function webfinger( $request ) {
+ /*
+ * Action triggerd prior to the ActivityPub profile being created and sent to the client
+ */
+ \do_action( 'activitypub_rest_webfinger_pre' );
+
+ $resource = $request->get_param( 'resource' );
+ $response = self::get_profile( $resource );
+
+ return new WP_REST_Response( $response, 200 );
+ }
+
+ /**
+ * The supported parameters
+ *
+ * @return array list of parameters
+ */
+ public static function request_parameters() {
+ $params = array();
+
+ $params['resource'] = array(
+ 'required' => true,
+ 'type' => 'string',
+ 'pattern' => '^acct:(.+)@(.+)$',
+ );
+
+ return $params;
+ }
+
+ /**
+ * Get the WebFinger profile.
+ *
+ * @param string $resource the WebFinger resource.
+ *
+ * @return array the WebFinger profile.
+ */
+ public static function get_profile( $resource ) {
+ $user = User_Collection::get_by_resource( $resource );
+
+ if ( is_wp_error( $user ) ) {
+ return $user;
+ }
+
+ $aliases = array(
+ $user->get_url(),
+ );
+
+ $profile = array(
+ 'subject' => $resource,
+ 'aliases' => array_values( array_unique( $aliases ) ),
+ 'links' => array(
+ array(
+ 'rel' => 'self',
+ 'type' => 'application/activity+json',
+ 'href' => $user->get_url(),
+ ),
+ array(
+ 'rel' => 'http://webfinger.net/rel/profile-page',
+ 'type' => 'text/html',
+ 'href' => $user->get_url(),
+ ),
+ ),
+ );
+
+ if ( 'Group' === $user->get_type() ) {
+ $profile['links'][0]['properties'] = array(
+ 'https://www.w3.org/ns/activitystreams#type' => 'Group',
+ );
+ }
+
+ return $profile;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/table/class-followers.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/table/class-followers.php
new file mode 100644
index 00000000..3045dddf
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/table/class-followers.php
@@ -0,0 +1,176 @@
+id === 'settings_page_activitypub' ) {
+ $this->user_id = Users::BLOG_USER_ID;
+ } else {
+ $this->user_id = \get_current_user_id();
+ }
+
+ parent::__construct(
+ array(
+ 'singular' => \__( 'Follower', 'activitypub' ),
+ 'plural' => \__( 'Followers', 'activitypub' ),
+ 'ajax' => false,
+ )
+ );
+ }
+
+ public function get_columns() {
+ return array(
+ 'cb' => ' ',
+ 'avatar' => \__( 'Avatar', 'activitypub' ),
+ 'post_title' => \__( 'Name', 'activitypub' ),
+ 'username' => \__( 'Username', 'activitypub' ),
+ 'url' => \__( 'URL', 'activitypub' ),
+ 'published' => \__( 'Followed', 'activitypub' ),
+ 'modified' => \__( 'Last updated', 'activitypub' ),
+ );
+ }
+
+ public function get_sortable_columns() {
+ $sortable_columns = array(
+ 'post_title' => array( 'post_title', true ),
+ 'modified' => array( 'modified', false ),
+ 'published' => array( 'published', false ),
+ );
+
+ return $sortable_columns;
+ }
+
+ public function prepare_items() {
+ $columns = $this->get_columns();
+ $hidden = array();
+
+ $this->process_action();
+ $this->_column_headers = array( $columns, $hidden, $this->get_sortable_columns() );
+
+ $page_num = $this->get_pagenum();
+ $per_page = 20;
+
+ $args = array();
+
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ if ( isset( $_GET['orderby'] ) ) {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ $args['orderby'] = sanitize_text_field( wp_unslash( $_GET['orderby'] ) );
+ }
+
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ if ( isset( $_GET['order'] ) ) {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ $args['order'] = sanitize_text_field( wp_unslash( $_GET['order'] ) );
+ }
+
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ if ( isset( $_GET['s'] ) && isset( $_REQUEST['_wpnonce'] ) ) {
+ $nonce = sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) );
+ if ( wp_verify_nonce( $nonce, 'bulk-' . $this->_args['plural'] ) ) {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ $args['s'] = sanitize_text_field( wp_unslash( $_GET['s'] ) );
+ }
+ }
+
+ $followers_with_count = FollowerCollection::get_followers_with_count( $this->user_id, $per_page, $page_num, $args );
+ $followers = $followers_with_count['followers'];
+ $counter = $followers_with_count['total'];
+
+ $this->items = array();
+ $this->set_pagination_args(
+ array(
+ 'total_items' => $counter,
+ 'total_pages' => ceil( $counter / $per_page ),
+ 'per_page' => $per_page,
+ )
+ );
+
+ foreach ( $followers as $follower ) {
+ $item = array(
+ 'icon' => esc_attr( $follower->get_icon_url() ),
+ 'post_title' => esc_attr( $follower->get_name() ),
+ 'username' => esc_attr( $follower->get_preferred_username() ),
+ 'url' => esc_attr( $follower->get_url() ),
+ 'identifier' => esc_attr( $follower->get_id() ),
+ 'published' => esc_attr( $follower->get_published() ),
+ 'modified' => esc_attr( $follower->get_updated() ),
+ );
+
+ $this->items[] = $item;
+ }
+ }
+
+ public function get_bulk_actions() {
+ return array(
+ 'delete' => __( 'Delete', 'activitypub' ),
+ );
+ }
+
+ public function column_default( $item, $column_name ) {
+ if ( ! array_key_exists( $column_name, $item ) ) {
+ return __( 'None', 'activitypub' );
+ }
+ return $item[ $column_name ];
+ }
+
+ public function column_avatar( $item ) {
+ return sprintf(
+ ' ',
+ $item['icon']
+ );
+ }
+
+ public function column_url( $item ) {
+ return sprintf(
+ '%s ',
+ $item['url'],
+ $item['url']
+ );
+ }
+
+ public function column_cb( $item ) {
+ return sprintf( ' ', esc_attr( $item['identifier'] ) );
+ }
+
+ public function process_action() {
+ if ( ! isset( $_REQUEST['followers'] ) || ! isset( $_REQUEST['_wpnonce'] ) ) {
+ return false;
+ }
+ $nonce = sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) );
+ if ( ! wp_verify_nonce( $nonce, 'bulk-' . $this->_args['plural'] ) ) {
+ return false;
+ }
+
+ if ( ! current_user_can( 'edit_user', $this->user_id ) ) {
+ return false;
+ }
+
+ $followers = $_REQUEST['followers']; // phpcs:ignore
+
+ switch ( $this->current_action() ) {
+ case 'delete':
+ if ( ! is_array( $followers ) ) {
+ $followers = array( $followers );
+ }
+ foreach ( $followers as $follower ) {
+ FollowerCollection::remove_follower( $this->user_id, $follower );
+ }
+ break;
+ }
+ }
+
+ public function get_user_count() {
+ return FollowerCollection::count_followers( $this->user_id );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-post.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-post.php
new file mode 100644
index 00000000..721bbec0
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-post.php
@@ -0,0 +1,606 @@
+wp_post = $wp_post;
+ }
+
+ /**
+ * Transforms the WP_Post object to an ActivityPub Object
+ *
+ * @see \Activitypub\Activity\Base_Object
+ *
+ * @return \Activitypub\Activity\Base_Object The ActivityPub Object
+ */
+ public function to_object() {
+ $wp_post = $this->wp_post;
+ $object = new Base_Object();
+
+ $object->set_id( $this->get_id() );
+ $object->set_url( $this->get_url() );
+ $object->set_type( $this->get_object_type() );
+
+ $published = \strtotime( $wp_post->post_date_gmt );
+
+ $object->set_published( \gmdate( 'Y-m-d\TH:i:s\Z', $published ) );
+
+ $updated = \strtotime( $wp_post->post_modified_gmt );
+
+ if ( $updated > $published ) {
+ $object->set_updated( \gmdate( 'Y-m-d\TH:i:s\Z', $updated ) );
+ }
+
+ $object->set_attributed_to( $this->get_attributed_to() );
+ $object->set_content( $this->get_content() );
+ $object->set_content_map(
+ array(
+ $this->get_locale() => $this->get_content(),
+ )
+ );
+ $path = sprintf( 'users/%d/followers', intval( $wp_post->post_author ) );
+
+ $object->set_to(
+ array(
+ 'https://www.w3.org/ns/activitystreams#Public',
+ get_rest_url_by_path( $path ),
+ )
+ );
+ $object->set_cc( $this->get_cc() );
+ $object->set_attachment( $this->get_attachments() );
+ $object->set_tag( $this->get_tags() );
+
+ return $object;
+ }
+
+ /**
+ * Returns the ID of the Post.
+ *
+ * @return string The Posts ID.
+ */
+ public function get_id() {
+ return $this->get_url();
+ }
+
+ /**
+ * Returns the URL of the Post.
+ *
+ * @return string The Posts URL.
+ */
+ public function get_url() {
+ $post = $this->wp_post;
+
+ if ( 'trash' === get_post_status( $post ) ) {
+ $permalink = \get_post_meta( $post->ID, 'activitypub_canonical_url', true );
+ } else {
+ $permalink = \get_permalink( $post );
+ }
+
+ return \esc_url( $permalink );
+ }
+
+ /**
+ * Returns the User-URL of the Author of the Post.
+ *
+ * If `single_user` mode is enabled, the URL of the Blog-User is returned.
+ *
+ * @return string The User-URL.
+ */
+ protected function get_attributed_to() {
+ if ( is_single_user() ) {
+ $user = new Blog_User();
+ return $user->get_url();
+ }
+
+ return Users::get_by_id( $this->wp_post->post_author )->get_url();
+ }
+
+ /**
+ * Generates all Media Attachments for a Post.
+ *
+ * @return array The Attachments.
+ */
+ protected function get_attachments() {
+ // Once upon a time we only supported images, but we now support audio/video as well.
+ // We maintain the image-centric naming for backwards compatibility.
+ $max_media = intval( \apply_filters( 'activitypub_max_image_attachments', \get_option( 'activitypub_max_image_attachments', ACTIVITYPUB_MAX_IMAGE_ATTACHMENTS ) ) );
+
+ if ( site_supports_blocks() && \has_blocks( $this->wp_post->post_content ) ) {
+ return $this->get_block_attachments( $max_media );
+ }
+
+ return $this->get_classic_editor_images( $max_media );
+ }
+
+ /**
+ * Get media attachments from blocks. They will be formatted as ActivityPub attachments, not as WP attachments.
+ *
+ * @param int $max_media The maximum number of attachments to return.
+ *
+ * @return array The attachments.
+ */
+ protected function get_block_attachments( $max_media ) {
+ // max media can't be negative or zero
+ if ( $max_media <= 0 ) {
+ return array();
+ }
+
+ $id = $this->wp_post->ID;
+
+ $media_ids = array();
+
+ // list post thumbnail first if this post has one
+ if ( \function_exists( 'has_post_thumbnail' ) && \has_post_thumbnail( $id ) ) {
+ $media_ids[] = \get_post_thumbnail_id( $id );
+ }
+
+ if ( $max_media > 0 ) {
+ $blocks = \parse_blocks( $this->wp_post->post_content );
+ $media_ids = self::get_media_ids_from_blocks( $blocks, $media_ids, $max_media );
+ }
+
+ return \array_filter( \array_map( array( self::class, 'wp_attachment_to_activity_attachment' ), $media_ids ) );
+ }
+
+ /**
+ * Get image attachments from the classic editor.
+ * Note that audio/video attachments are only supported in the block editor.
+ *
+ * @param int $max_images The maximum number of images to return.
+ *
+ * @return array The attachments.
+ */
+ protected function get_classic_editor_images( $max_images ) {
+ // max images can't be negative or zero
+ if ( $max_images <= 0 ) {
+ return array();
+ }
+
+ $id = $this->wp_post->ID;
+
+ $image_ids = array();
+
+ // list post thumbnail first if this post has one
+ if ( \function_exists( 'has_post_thumbnail' ) && \has_post_thumbnail( $id ) ) {
+ $image_ids[] = \get_post_thumbnail_id( $id );
+ --$max_images;
+ }
+
+ if ( $max_images > 0 ) {
+ $query = new \WP_Query(
+ array(
+ 'post_parent' => $id,
+ 'post_status' => 'inherit',
+ 'post_type' => 'attachment',
+ 'post_mime_type' => 'image',
+ 'order' => 'ASC',
+ 'orderby' => 'menu_order ID',
+ 'posts_per_page' => $max_images,
+ )
+ );
+ foreach ( $query->get_posts() as $attachment ) {
+ if ( ! \in_array( $attachment->ID, $image_ids, true ) ) {
+ $image_ids[] = $attachment->ID;
+ }
+ }
+ }
+ $image_ids = \array_unique( $image_ids );
+
+ return \array_filter( \array_map( array( self::class, 'wp_attachment_to_activity_attachment' ), $image_ids ) );
+ }
+
+ /**
+ * Recursively get media IDs from blocks.
+ * @param array $blocks The blocks to search for media IDs
+ * @param array $media_ids The media IDs to append new IDs to
+ * @param int $max_media The maximum number of media to return.
+ *
+ * @return array The image IDs.
+ */
+ protected static function get_media_ids_from_blocks( $blocks, $media_ids, $max_media ) {
+
+ foreach ( $blocks as $block ) {
+ // recurse into inner blocks
+ if ( ! empty( $block['innerBlocks'] ) ) {
+ $media_ids = self::get_media_ids_from_blocks( $block['innerBlocks'], $media_ids, $max_media );
+ }
+
+ switch ( $block['blockName'] ) {
+ case 'core/image':
+ case 'core/cover':
+ case 'core/audio':
+ case 'core/video':
+ case 'videopress/video':
+ if ( ! empty( $block['attrs']['id'] ) ) {
+ $media_ids[] = $block['attrs']['id'];
+ }
+ break;
+ case 'jetpack/slideshow':
+ case 'jetpack/tiled-gallery':
+ if ( ! empty( $block['attrs']['ids'] ) ) {
+ $media_ids = array_merge( $media_ids, $block['attrs']['ids'] );
+ }
+ break;
+ case 'jetpack/image-compare':
+ if ( ! empty( $block['attrs']['beforeImageId'] ) ) {
+ $media_ids[] = $block['attrs']['beforeImageId'];
+ }
+ if ( ! empty( $block['attrs']['afterImageId'] ) ) {
+ $media_ids[] = $block['attrs']['afterImageId'];
+ }
+ break;
+ }
+
+ // depupe
+ $media_ids = \array_unique( $media_ids );
+
+ // stop doing unneeded work
+ if ( count( $media_ids ) >= $max_media ) {
+ break;
+ }
+ }
+
+ // still need to slice it because one gallery could knock us over the limit
+ return array_slice( $media_ids, 0, $max_media );
+ }
+
+ /**
+ * Converts a WordPress Attachment to an ActivityPub Attachment.
+ *
+ * @param int $id The Attachment ID.
+ *
+ * @return array The ActivityPub Attachment.
+ */
+ public static function wp_attachment_to_activity_attachment( $id ) {
+ $attachment = array();
+ $mime_type = \get_post_mime_type( $id );
+ $mime_type_parts = \explode( '/', $mime_type );
+ // switching on image/audio/video
+ switch ( $mime_type_parts[0] ) {
+ case 'image':
+ $image_size = 'full';
+
+ /**
+ * Filter the image URL returned for each post.
+ *
+ * @param array|false $thumbnail The image URL, or false if no image is available.
+ * @param int $id The attachment ID.
+ * @param string $image_size The image size to retrieve. Set to 'full' by default.
+ */
+ $thumbnail = apply_filters(
+ 'activitypub_get_image',
+ self::get_image( $id, $image_size ),
+ $id,
+ $image_size
+ );
+
+ if ( $thumbnail ) {
+ $alt = \get_post_meta( $id, '_wp_attachment_image_alt', true );
+ $image = array(
+ 'type' => 'Image',
+ 'url' => $thumbnail[0],
+ 'mediaType' => $mime_type,
+ );
+
+ if ( $alt ) {
+ $image['name'] = $alt;
+ }
+ $attachment = $image;
+ }
+ break;
+
+ case 'audio':
+ case 'video':
+ $attachment = array(
+ 'type' => 'Document',
+ 'mediaType' => $mime_type,
+ 'url' => \wp_get_attachment_url( $id ),
+ 'name' => \get_the_title( $id ),
+ );
+ $meta = wp_get_attachment_metadata( $id );
+ // height and width for videos
+ if ( isset( $meta['width'] ) && isset( $meta['height'] ) ) {
+ $attachment['width'] = $meta['width'];
+ $attachment['height'] = $meta['height'];
+ }
+ // @todo: add `icon` support for audio/video attachments. Maybe use post thumbnail?
+ break;
+ }
+
+ return \apply_filters( 'activitypub_attachment', $attachment, $id );
+ }
+
+ /**
+ * Return details about an image attachment.
+ *
+ * @param int $id The attachment ID.
+ * @param string $image_size The image size to retrieve. Set to 'full' by default.
+ *
+ * @return array|false Array of image data, or boolean false if no image is available.
+ */
+ protected static function get_image( $id, $image_size = 'full' ) {
+ /**
+ * Hook into the image retrieval process. Before image retrieval.
+ *
+ * @param int $id The attachment ID.
+ * @param string $image_size The image size to retrieve. Set to 'full' by default.
+ */
+ do_action( 'activitypub_get_image_pre', $id, $image_size );
+
+ $image = \wp_get_attachment_image_src( $id, $image_size );
+
+ /**
+ * Hook into the image retrieval process. After image retrieval.
+ *
+ * @param int $id The attachment ID.
+ * @param string $image_size The image size to retrieve. Set to 'full' by default.
+ */
+ do_action( 'activitypub_get_image_post', $id, $image_size );
+
+ return $image;
+ }
+
+ /**
+ * Returns the ActivityStreams 2.0 Object-Type for a Post based on the
+ * settings and the Post-Type.
+ *
+ * @see https://www.w3.org/TR/activitystreams-vocabulary/#activity-types
+ *
+ * @return string The Object-Type.
+ */
+ protected function get_object_type() {
+ if ( 'wordpress-post-format' !== \get_option( 'activitypub_object_type', 'note' ) ) {
+ return \ucfirst( \get_option( 'activitypub_object_type', 'note' ) );
+ }
+
+ // Default to Article.
+ $object_type = 'Article';
+ $post_type = \get_post_type( $this->wp_post );
+ switch ( $post_type ) {
+ case 'post':
+ $post_format = \get_post_format( $this->wp_post );
+ switch ( $post_format ) {
+ case 'aside':
+ case 'status':
+ case 'quote':
+ case 'note':
+ $object_type = 'Note';
+ break;
+ case 'gallery':
+ case 'image':
+ $object_type = 'Image';
+ break;
+ case 'video':
+ $object_type = 'Video';
+ break;
+ case 'audio':
+ $object_type = 'Audio';
+ break;
+ default:
+ $object_type = 'Article';
+ break;
+ }
+ break;
+ case 'page':
+ $object_type = 'Page';
+ break;
+ case 'attachment':
+ $mime_type = \get_post_mime_type();
+ $media_type = \preg_replace( '/(\/[a-zA-Z]+)/i', '', $mime_type );
+ switch ( $media_type ) {
+ case 'audio':
+ $object_type = 'Audio';
+ break;
+ case 'video':
+ $object_type = 'Video';
+ break;
+ case 'image':
+ $object_type = 'Image';
+ break;
+ }
+ break;
+ default:
+ $object_type = 'Article';
+ break;
+ }
+
+ return $object_type;
+ }
+
+ /**
+ * Returns a list of Mentions, used in the Post.
+ *
+ * @see https://docs.joinmastodon.org/spec/activitypub/#Mention
+ *
+ * @return array The list of Mentions.
+ */
+ protected function get_cc() {
+ $cc = array();
+
+ $mentions = $this->get_mentions();
+ if ( $mentions ) {
+ foreach ( $mentions as $url ) {
+ $cc[] = $url;
+ }
+ }
+
+ return $cc;
+ }
+
+ /**
+ * Returns a list of Tags, used in the Post.
+ *
+ * This includes Hash-Tags and Mentions.
+ *
+ * @return array The list of Tags.
+ */
+ protected function get_tags() {
+ $tags = array();
+
+ $post_tags = \get_the_tags( $this->wp_post->ID );
+ if ( $post_tags ) {
+ foreach ( $post_tags as $post_tag ) {
+ $tag = array(
+ 'type' => 'Hashtag',
+ 'href' => \esc_url( \get_tag_link( $post_tag->term_id ) ),
+ 'name' => esc_hashtag( $post_tag->name ),
+ );
+ $tags[] = $tag;
+ }
+ }
+
+ $mentions = $this->get_mentions();
+ if ( $mentions ) {
+ foreach ( $mentions as $mention => $url ) {
+ $tag = array(
+ 'type' => 'Mention',
+ 'href' => \esc_url( $url ),
+ 'name' => \esc_html( $mention ),
+ );
+ $tags[] = $tag;
+ }
+ }
+
+ return $tags;
+ }
+
+ /**
+ * Returns the content for the ActivityPub Item.
+ *
+ * The content will be generated based on the user settings.
+ *
+ * @return string The content.
+ */
+ protected function get_content() {
+ global $post;
+
+ /**
+ * Provides an action hook so plugins can add their own hooks/filters before AP content is generated.
+ *
+ * Example: if a plugin adds a filter to `the_content` to add a button to the end of posts, it can also remove that filter here.
+ *
+ * @param WP_Post $post The post object.
+ */
+ do_action( 'activitypub_before_get_content', $post );
+
+ // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
+ $post = $this->wp_post;
+ $content = $this->get_post_content_template();
+
+ // Register our shortcodes just in time.
+ Shortcodes::register();
+ // Fill in the shortcodes.
+ setup_postdata( $post );
+ $content = do_shortcode( $content );
+ wp_reset_postdata();
+
+ $content = \wpautop( $content );
+ $content = \preg_replace( '/[\n\r\t]/', '', $content );
+ $content = \trim( $content );
+
+ $content = \apply_filters( 'activitypub_the_content', $content, $post );
+
+ // Don't need these any more, should never appear in a post.
+ Shortcodes::unregister();
+
+ return $content;
+ }
+
+ /**
+ * Gets the template to use to generate the content of the activitypub item.
+ *
+ * @return string The Template.
+ */
+ protected function get_post_content_template() {
+ if ( 'excerpt' === \get_option( 'activitypub_post_content_type', 'content' ) ) {
+ return "[ap_excerpt]\n\n[ap_permalink type=\"html\"]";
+ }
+
+ if ( 'title' === \get_option( 'activitypub_post_content_type', 'content' ) ) {
+ return "[ap_title]\n\n[ap_permalink type=\"html\"]";
+ }
+
+ if ( 'content' === \get_option( 'activitypub_post_content_type', 'content' ) ) {
+ return "[ap_content]\n\n[ap_permalink type=\"html\"]\n\n[ap_hashtags]";
+ }
+
+ return \get_option( 'activitypub_custom_post_content', ACTIVITYPUB_CUSTOM_POST_CONTENT );
+ }
+
+ /**
+ * Helper function to get the @-Mentions from the post content.
+ *
+ * @return array The list of @-Mentions.
+ */
+ protected function get_mentions() {
+ return apply_filters( 'activitypub_extract_mentions', array(), $this->wp_post->post_content, $this->wp_post );
+ }
+
+ /**
+ * Returns the locale of the post.
+ *
+ * @return string The locale of the post.
+ */
+ public function get_locale() {
+ $post_id = $this->wp_post->ID;
+ $lang = \strtolower( \strtok( \get_locale(), '_-' ) );
+
+ /**
+ * Filter the locale of the post.
+ *
+ * @param string $lang The locale of the post.
+ * @param int $post_id The post ID.
+ * @param WP_Post $post The post object.
+ *
+ * @return string The filtered locale of the post.
+ */
+ return apply_filters( 'activitypub_post_locale', $lang, $post_id, $this->wp_post );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-buddypress.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-buddypress.php
new file mode 100644
index 00000000..45cfc0d6
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-buddypress.php
@@ -0,0 +1,66 @@
+url = bp_core_get_user_domain( $author_id ); //add BP member profile URL as user URL
+
+ // add BuddyPress' cover_image instead of WordPress' header_image
+ $cover_image_url = bp_attachments_get_attachment( 'url', array( 'item_id' => $author_id ) );
+
+ if ( $cover_image_url ) {
+ $object->image = array(
+ 'type' => 'Image',
+ 'url' => $cover_image_url,
+ );
+ }
+
+ // change profile URL to BuddyPress' profile URL
+ $object->attachment['profile_url'] = array(
+ 'type' => 'PropertyValue',
+ 'name' => \__( 'Profile', 'activitypub' ),
+ 'value' => \html_entity_decode(
+ '' . \wp_parse_url( \bp_core_get_user_domain( $author_id ), \PHP_URL_HOST ) . ' ',
+ \ENT_QUOTES,
+ 'UTF-8'
+ ),
+ );
+
+ // replace blog URL on multisite
+ if ( is_multisite() ) {
+ $user_blogs = get_blogs_of_user( $author_id ); //get sites of user to send as AP metadata
+
+ if ( ! empty( $user_blogs ) ) {
+ unset( $object->attachment['blog_url'] );
+
+ foreach ( $user_blogs as $blog ) {
+ if ( 1 !== $blog->userblog_id ) {
+ $object->attachment[] = array(
+ 'type' => 'PropertyValue',
+ 'name' => $blog->blogname,
+ 'value' => \html_entity_decode(
+ '' . \wp_parse_url( $blog->siteurl, \PHP_URL_HOST ) . ' ',
+ \ENT_QUOTES,
+ 'UTF-8'
+ ),
+ );
+ }
+ }
+ }
+ }
+
+ return $object;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-nodeinfo.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-nodeinfo.php
new file mode 100644
index 00000000..dea6c678
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-nodeinfo.php
@@ -0,0 +1,64 @@
+= '2.0' ) {
+ $nodeinfo['protocols'][] = 'activitypub';
+ } else {
+ $nodeinfo['protocols']['inbound'][] = 'activitypub';
+ $nodeinfo['protocols']['outbound'][] = 'activitypub';
+ }
+
+ $nodeinfo['usage']['users'] = array(
+ 'total' => get_total_users(),
+ 'activeMonth' => get_active_users( '1 month ago' ),
+ 'activeHalfyear' => get_active_users( '6 month ago' ),
+ );
+
+ return $nodeinfo;
+ }
+
+ /**
+ * Extend NodeInfo2 data
+ *
+ * @param array $nodeinfo NodeInfo2 data
+ *
+ * @return array The extended array
+ */
+ public static function add_nodeinfo2_discovery( $nodeinfo ) {
+ $nodeinfo['protocols'][] = 'activitypub';
+
+ $nodeinfo['usage']['users'] = array(
+ 'total' => get_total_users(),
+ 'activeMonth' => get_active_users( '1 month ago' ),
+ 'activeHalfyear' => get_active_users( '6 month ago' ),
+ );
+
+ return $nodeinfo;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-webfinger.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-webfinger.php
new file mode 100644
index 00000000..c9dd565e
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-webfinger.php
@@ -0,0 +1,62 @@
+ID );
+
+ if ( ! $user || is_wp_error( $user ) ) {
+ return $array;
+ }
+
+ $array['links'][] = array(
+ 'rel' => 'self',
+ 'type' => 'application/activity+json',
+ 'href' => $user->get_url(),
+ );
+
+ return $array;
+ }
+
+ /**
+ * Add WebFinger discovery links
+ *
+ * @param array $array the jrd array
+ * @param string $resource the WebFinger resource
+ * @param WP_User $user the WordPress user
+ *
+ * @return array the jrd array
+ */
+ public static function add_pseudo_user_discovery( $array, $resource ) {
+ if ( $array ) {
+ return $array;
+ }
+
+ return Webfinger_Rest::get_profile( $resource );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/readme.txt b/wp-content/upgrade-temp-backup/plugins/activitypub/readme.txt
new file mode 100644
index 00000000..b7c9b67a
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/readme.txt
@@ -0,0 +1,529 @@
+=== ActivityPub ===
+Contributors: automattic, pfefferle, mediaformat, mattwiebe, akirk, jeherve, nuriapena, cavalierlife
+Tags: OStatus, fediverse, activitypub, activitystream
+Requires at least: 4.7
+Tested up to: 6.4
+Stable tag: 1.3.0
+Requires PHP: 5.6
+License: MIT
+License URI: http://opensource.org/licenses/MIT
+
+The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format.
+
+== Description ==
+
+Enter the fediverse with **ActivityPub**, broadcasting your blog to a wider audience! Attract followers, deliver updates, and receive comments from a diverse user base of **ActivityPub**\-compliant platforms.
+
+With the ActivityPub plugin installed, your WordPress blog itself function as a federated profile, along with profiles for each author. For instance, if your website is `example.com`, then the blog-wide profile can be found at `@example.com@example.com`, and authors like Jane and Bob would have their individual profiles at `@jane@example.com` and `@bobz@example.com`, respectively.
+
+An example: I give you my Mastodon profile name: `@pfefferle@mastodon.social`. You search, see my profile, and hit follow. Now, any post I make appears in your Home feed. Similarly, with the ActivityPub plugin, you can find and follow Jane's profile at `@jane@example.com`.
+
+Once you follow Jane's `@jane@example.com` profile, any blog post she crafts on `example.com` will land in your Home feed. Simultaneously, by following the blog-wide profile `@example.com@example.com`, you'll receive updates from all authors.
+
+**Note**: if no one follows your author or blog instance, your posts remain unseen. The simplest method to verify the plugin's operation is by following your profile. If you possess a Mastodon profile, initiate by following your new one.
+
+The plugin works with the following tested federated platforms, but there may be more that it works with as well:
+
+* [Mastodon](https://joinmastodon.org/)
+* [Pleroma](https://pleroma.social/)/[Akkoma](https://akkoma.social/)
+* [friendica](https://friendi.ca/)
+* [Hubzilla](https://hubzilla.org/)
+* [Pixelfed](https://pixelfed.org/)
+* [Socialhome](https://socialhome.network/)
+* [Misskey](https://join.misskey.page/)
+* [Firefish](https://joinfirefish.org/) (rebrand of Calckey)
+
+Some things to note:
+
+1. The blog-wide profile is only compatible with sites with rewrite rules enabled. If your site does not have rewrite rules enabled, the author-specific profiles may still work.
+1. Many single-author blogs have chosen to turn off or redirect their author profile pages, usually via an SEO plugin like Yoast or Rank Math. This is usually done to avoid duplicate content with your blog’s home page. If your author page has been deactivated in this way, then ActivityPub author profiles won’t work for you. Instead, you can turn your author profile page back on, and then use the option in your SEO plugin to noindex the author page. This will still resolve duplicate content issues with search engines and will enable ActivityPub author profiles to work.
+1. Once ActivityPub is installed, *only new posts going forward* will be available in the fediverse. Likewise, even if you’ve been using ActivityPub for a while, anyone who follows your site, will only see new posts you publish from that moment on. They will never see previously-published posts in their Home feed. This process is very similar to subscribing to a newsletter. If you subscribe to a newsletter, you will only receive future emails, but not the old archived ones. With ActivityPub, if someone follows your site, they will only receive new blog posts you publish from then on.
+
+So what’s the process?
+
+1. Install the ActivityPub plugin.
+1. Go to the plugin’s settings page and adjust the settings to your liking. Click the Save button when ready.
+1. Make sure your blog’s author profile page is active if you are using author profiles.
+1. Go to Mastodon or any other federated platform, and search for your profile, and follow it. Your new profile will be in the form of either `@your_username@example.com` or `@example.com@example.com`, so that is what you’ll search for.
+1. On your blog, publish a new post.
+1. From Mastodon, check to see if the new post appears in your Home feed.
+
+Please note that it may take up to 15 minutes or so for the new post to show up in your federated feed. This is because the messages are sent to the federated platforms using a delayed cron. This avoids breaking the publishing process for those cases where users might have lots of followers. So please don’t assume that just because you didn’t see it show up right away that something is broken. Give it some time. In most cases, it will show up within a few minutes, and you’ll know everything is working as expected.
+
+== Frequently Asked Questions ==
+
+= tl;dr =
+
+This plugin connects your WordPress blog to popular social platforms like Mastodon, making your posts more accessible to a wider audience. Once installed, your blog can be followed by users on these platforms, allowing them to receive your new posts in their feeds.
+
+= What is the status of this plugin? =
+
+Implemented:
+
+* blog profile pages (JSON representation)
+* author profile pages (JSON representation)
+* custom links
+* functional inbox/outbox
+* follow (accept follows)
+* share posts
+* receive comments/reactions
+* signature verification
+
+To implement:
+
+* threaded comments support
+* replace shortcodes with blocks for layout
+
+= What is "ActivityPub for WordPress" =
+
+*ActivityPub for WordPress* extends WordPress with some Fediverse features, but it does not compete with platforms like Friendica or Mastodon. If you want to run a **decentralized social network**, please use [Mastodon](https://joinmastodon.org/) or [GNU social](https://gnusocial.network/).
+
+= What if you are running your blog in a subdirectory? =
+
+In order for webfinger to work, it must be mapped to the root directory of the URL on which your blog resides.
+
+**Apache**
+
+Add the following to the .htaccess file in the root directory:
+
+ RedirectMatch "^\/\.well-known/(webfinger|nodeinfo|x-nodeinfo2)(.*)$" /blog/.well-known/$1$2
+
+Where 'blog' is the path to the subdirectory at which your blog resides.
+
+**Nginx**
+
+Add the following to the site.conf in sites-available:
+
+ location ~* /.well-known {
+ allow all;
+ try_files $uri $uri/ /blog/?$args;
+ }
+
+Where 'blog' is the path to the subdirectory at which your blog resides.
+
+== Changelog ==
+
+Project maintained on GitHub at [automattic/wordpress-activitypub](https://github.com/automattic/wordpress-activitypub).
+
+= 1.3.0 =
+
+* Added: Threaded-Comments support
+* Improved: alt text for avatars in Follow Me/Followers blocks
+* Improved: `Delete`, `Update` and `Follow` Activities
+* Improved: better/more effective handling of `Delete` Activities
+* Improved: allow `
` and ` ` for Comments
+* Fixed: removed default limit of WP_Query to send updates to all Inboxes and not only to the first 10
+
+= 1.2.0 =
+
+* Add: Search and order followerer lists
+* Add: Have a filter to defer signature verification
+* Improved: "Follow Me" styles for dark themes
+* Improved: Allow `p` and `br` tags only for AP comments
+* Fixed: Deduplicate attachments earlier to prevent incorrect max_media
+
+
+= 1.1.0 =
+
+* Improved: audio and video attachments are now supported!
+* Improved: better error messages if remote profile is not accessible
+* Improved: PHP 8.1 compatibility
+* Fixed: don't try to parse mentions or hashtags for very large (>1MB) posts to prevent timeouts
+* Fixed: better handling of ISO-639-1 locale codes
+* Improved: more reliable [ap_author], props @uk3
+* Improved: NodeInfo statistics
+
+= 1.0.10 =
+
+* Improved: better error messages if remote profile is not accessible
+
+= 1.0.9 =
+
+* Fixed: broken following endpoint
+
+= 1.0.8 =
+
+* Fixed: blocking of HEAD requests
+* Fixed: PHP fatal error
+* Fixed: several typos
+* Fixed: error codes
+* Improved: loading of shortcodes
+* Updated: caching of followers
+* Updated: Application-User is no longer "indexable"
+* Updated: more consistent usage of the `application/activity+json` Content-Type
+* Removed: featured tags endpoint
+
+= 1.0.7 =
+
+* Fixed: broken function call
+* Add: filter to hook into "is blog public" check
+
+= 1.0.6 =
+
+* Fixed: more restrictive request verification
+
+= 1.0.5 =
+
+* Fixed: compatibility with WebFinger and NodeInfo plugin
+
+= 1.0.4 =
+
+* Fixed: Constants were not loaded early enough, resulting in a race condition
+* Fixed: Featured image was ignored when using the block editor
+
+= 1.0.3 =
+
+* Fixed: compatibility with older WordPress/PHP versions
+* Update: refactoring of the Plugin init process
+* Update: better frontend UX and improved theme compat for blocks
+* Compatibility: add a ACTIVITYPUB_DISABLE_REWRITES constant
+* Compatibility: add pre-fetch hook to allow plugins to hang filters on
+
+= 1.0.2 =
+
+* Updated: improved hashtag visibility in default template
+* Updated: reduced number of followers to be checked/updated via Cron, when System Cron is not set up
+* Updated: check if username of Blog-User collides with an Authors name
+* Compatibility: improved Group meta informations
+* Fixed: detection of single user mode
+* Fixed: remote delete
+* Fixed: styles in Follow-Me block
+* Fixed: various encoding and formatting issues
+* Fixed: (health) check Author URLs only if Authors are enabled
+
+= 1.0.1 =
+
+* Update: improve image attachment detection using the block editor
+* Update: better error code handling for API responses
+* Update: use a tag stack instead of regex for protecting tags for Hashtags and @-Mentions
+* Compatibility: better signature support for subpath-installations
+* Compatibility: allow deactivating blocks registered by the plugin
+* Compatibility: avoid Fatal Errors when using ClassicPress
+* Compatibility: improve the Group-Actor to play nicely with existing implementations
+* Fixed: truncate long blog titles and handles for the "Follow me" block
+* Fixed: ensure that only a valid user can be selected for the "Follow me" block
+* Fixed: fix a typo in a hook name
+* Fixed: a problem with signatures when running WordPress in a sub-path
+
+= 1.0.0 =
+
+* Add: blog-wide Account (catchall, like `example.com@example.com`)
+* Add: a Follow Me block (help visitors to follow your Profile)
+* Add: Signature Verification: https://docs.joinmastodon.org/spec/security/
+* Add: a Followers Block (show off your Followers)
+* Add: Simple caching
+* Add: Collection endpoints for Featured Tags and Featured Posts
+* Add: Better handling of Hashtags in mobile apps
+* Update: Complete rewrite of the Follower-System based on Custom Post Types
+* Update: Improved linter (PHPCS)
+* Compatibility: Add a new conditional, `\Activitypub\is_activitypub_request()`, to allow third-party plugins to detect ActivityPub requests
+* Compatibility: Add hooks to allow modifying images returned in ActivityPub requests
+* Compatibility: Indicate that the plugin is compatible and has been tested with the latest version of WordPress, 6.3
+* Compatibility: Avoid PHP notice on sites using PHP 8.2
+* Fixed: Load the plugin later in the WordPress code lifecycle to avoid errors in some requests
+* Fixed: Updating posts
+* Fixed: Hashtag now support CamelCase and UTF-8
+
+= 0.17.0 =
+
+* Fix type-selector
+* Allow more HTML elements in Activity-Objects
+
+= 0.16.5 =
+
+* Return empty content/excerpt on password protected posts/pages
+
+= 0.16.4 =
+
+* Remove scripts later in the queue, to also handle scripts added by blocks
+* Add published date to author profiles
+
+= 0.16.3 =
+
+* "cc", "to", ... fields can either be an array or a string
+* Remove "style" and "script" HTML elements from content
+
+= 0.16.2 =
+
+* Fix fatal error in outbox
+
+= 0.16.1 =
+
+* Fix "update and create, posts appear blank on Mastodon" issue
+
+= 0.16.0 =
+
+* Add "Outgoing Mentions" ([#213](https://github.com/pfefferle/wordpress-activitypub/pull/213)) props [@akirk](https://github.com/akirk)
+* Add configuration item for number of images to attach ([#248](https://github.com/pfefferle/wordpress-activitypub/pull/248)) props [@mexon](https://github.com/mexon)
+* Use shortcodes instead of custom templates, to setup the Activity Post-Content ([#250](https://github.com/pfefferle/wordpress-activitypub/pull/250)) props [@toolstack](https://github.com/toolstack)
+* Remove custom REST Server, because the needed changes are now merged into Core.
+* Fix hashtags ([#261](https://github.com/pfefferle/wordpress-activitypub/pull/261)) props [@akirk](https://github.com/akirk)
+* Change priorites, to maybe fix the hashtag issue
+
+= 0.15.0 =
+
+* Enable ActivityPub only for users that can `publish_posts`
+* Persist only public Activities
+* Fix remote-delete
+
+= 0.14.3 =
+
+* Better error handling. props [@akirk](https://github.com/akirk)
+
+= 0.14.2 =
+
+* Fix Critical error when using Friends Plugin and adding new URL to follow. props [@akirk](https://github.com/akirk)
+
+= 0.14.1 =
+
+* Fix "WebFinger not compatible with PHP < 8.0". props [@mexon](https://github.com/mexon)
+
+= 0.14.0 =
+
+* Friends support: https://wordpress.org/plugins/friends/ props [@akirk](https://github.com/akirk)
+* Massive guidance improvements. props [mediaformat](https://github.com/mediaformat) & [@akirk](https://github.com/akirk)
+* Add Custom Post Type support to outbox API. props [blueset](https://github.com/blueset)
+* Better hash-tag support. props [bocops](https://github.com/bocops)
+* Fix user-count (NodeInfo). props [mediaformat](https://github.com/mediaformat)
+
+= 0.13.4 =
+
+* fix webfinger for email identifiers
+
+= 0.13.3 =
+
+* fix: Create and Note should not have the same ActivityPub ID
+
+= 0.13.2 =
+
+* fix Follow issue AGAIN
+
+= 0.13.1 =
+
+* fix Inbox issue
+
+= 0.13.0 =
+
+* add Autor URL and WebFinger health checks
+* fix NodeInfo endpoint
+
+= 0.12.0 =
+
+* use "pre_option_require_name_email" filter instead of "check_comment_flood". props [@akirk](https://github.com/akirk)
+* save only comments/replies
+* check for an explicit "undo -> follow" action. see https://wordpress.org/support/topic/qs-after-latest/
+
+= 0.11.2 =
+
+* fix inconsistent `%tags%` placeholder
+
+= 0.11.1 =
+
+* fix follow/unfollow actions
+
+= 0.11.0 =
+
+* add support for customizable post-content
+* first try of a delete activity
+* do not require email for AP entries. props [@akirk](https://github.com/akirk)
+* fix [timezones](https://github.com/pfefferle/wordpress-activitypub/issues/63) bug. props [@mediaformat](https://github.com/mediaformat)
+* fix [digest header](https://github.com/pfefferle/wordpress-activitypub/issues/104) bug. props [@mediaformat](https://github.com/mediaformat)
+
+
+= 0.10.1 =
+
+* fix inbox activities, like follow
+* fix debug
+
+= 0.10.0 =
+
+* add image alt text to the ActivityStreams attachment property in a format that Mastodon can read. props [@BenLubar](https://github.com/BenLubar)
+* use the "summary" property for a title as Mastodon does. props [@BenLubar](https://github.com/BenLubar)
+* support authorized fetch to avoid having comments from "Anonymous". props [@BenLubar](https://github.com/BenLubar)
+* add new post type: "title and link only". props [@bgcarlisle](https://github.com/bgcarlisle)
+
+= 0.9.1 =
+
+* disable shared inbox
+* disable delete activity
+
+= 0.9.0 =
+
+* some code refactorings
+* fix #73
+
+= 0.8.3 =
+
+* fixed accept header bug
+
+= 0.8.2 =
+
+* add all required accept header
+* better/simpler accept-header handling
+* add debugging mechanism
+* Add setting to enable AP for different (public) Post-Types
+* explicit use of global functions
+
+= 0.8.1 =
+
+* fixed PHP warnings
+
+= 0.8.0 =
+
+* Moved followers list to user-menu
+
+= 0.7.4 =
+
+* added admin_email to metadata, to be able to "Manage your instance" on https://fediverse.network/manage/
+
+= 0.7.3 =
+
+* refactorings
+* fixed PHP warnings
+* better hashtag regex
+
+= 0.7.2 =
+
+* fixed JSON representation of posts https://merveilles.town/@xuv/101907542498716956
+
+= 0.7.1 =
+
+* fixed inbox problems with pleroma
+
+= 0.7.0 =
+
+* finally fixed pleroma compatibility
+* added "following" endpoint
+* simplified "followers" endpoint
+* fixed default value problem
+
+= 0.6.0 =
+
+* add tags as hashtags to the end of each activity
+* fixed pleroma following issue
+* followers-list improvements
+
+= 0.5.1 =
+
+* fixed name-collision that caused an infinite loop
+
+= 0.5.0 =
+
+* complete refactoring
+* fixed bug #30: Password-protected posts are federated
+* only send Activites when ActivityPub is enabled for this post-type
+
+= 0.4.4 =
+
+* show avatars
+
+= 0.4.3 =
+
+* finally fixed backlink in excerpt/summary posts
+
+= 0.4.2 =
+
+* fixed backlink in excerpt/summary posts (thanks @depone)
+
+= 0.4.1 =
+
+* finally fixed contact list
+
+= 0.4.0 =
+
+* added settings to enable/disable hashtag support
+* fixed follower list
+* send activities only for new posts, otherwise send updates
+
+= 0.3.2 =
+
+* added "followers" endpoint
+* change activity content from blog 'excerpt' to blog 'content'
+
+= 0.3.1 =
+
+* better json encoding
+
+= 0.3.0 =
+
+* basic hashtag support
+* temporarily deactivated likes and boosts
+* added support for actor objects
+* fixed encoding issue
+
+= 0.2.1 =
+
+* customizable backlink (permalink or shorturl)
+* show profile-identifiers also on profile settings
+
+= 0.2.0 =
+
+* added option to switch between content and excerpt
+* removed html and duplicate new-lines
+
+= 0.1.1 =
+
+* fixed "excerpt" in AS JSON
+* added settings for the activity-summary and for the activity-object-type
+
+= 0.1.0 =
+
+* added basic WebFinger support
+* added basic NodeInfo support
+* fully functional "follow" activity
+* send new posts to your followers
+* receive comments from your followers
+
+= 0.0.2 =
+
+* refactoring
+* functional inbox
+* nicer profile views
+
+= 0.0.1 =
+
+* initial
+
+== Upgrade Notice ==
+
+= 1.0.0 =
+
+For version 1.0.0 we have completely rebuilt the followers lists. There is a migration from the old format to the new, but it may take some time until the migration is complete. No data will be lost in the process, please give the migration some time.
+
+== Installation ==
+
+Follow the normal instructions for [installing WordPress plugins](https://wordpress.org/support/article/managing-plugins/).
+
+= Automatic Plugin Installation =
+
+To add a WordPress Plugin using the [built-in plugin installer](https://codex.wordpress.org/Administration_Screens#Add_New_Plugins):
+
+1. Go to [Plugins](https://codex.wordpress.org/Administration_Screens#Plugins) > [Add New](https://codex.wordpress.org/Plugins_Add_New_Screen).
+1. Type "`activitypub`" into the **Search Plugins** box.
+1. Find the WordPress Plugin you wish to install.
+ 1. Click **Details** for more information about the Plugin and instructions you may wish to print or save to help setup the Plugin.
+ 1. Click **Install Now** to install the WordPress Plugin.
+1. The resulting installation screen will list the installation as successful or note any problems during the install.
+1. If successful, click **Activate Plugin** to activate it, or **Return to Plugin Installer** for further actions.
+
+= Manual Plugin Installation =
+
+There are a few cases when manually installing a WordPress Plugin is appropriate.
+
+* If you wish to control the placement and the process of installing a WordPress Plugin.
+* If your server does not permit automatic installation of a WordPress Plugin.
+* If you want to try the [latest development version](https://github.com/pfefferle/wordpress-activitypub).
+
+Installation of a WordPress Plugin manually requires FTP familiarity and the awareness that you may put your site at risk if you install a WordPress Plugin incompatible with the current version or from an unreliable source.
+
+Backup your site completely before proceeding.
+
+To install a WordPress Plugin manually:
+
+* Download your WordPress Plugin to your desktop.
+ * Download from [the WordPress directory](https://wordpress.org/plugins/activitypub/)
+ * Download from [GitHub](https://github.com/pfefferle/wordpress-activitypub/releases)
+* If downloaded as a zip archive, extract the Plugin folder to your desktop.
+* With your FTP program, upload the Plugin folder to the `wp-content/plugins` folder in your WordPress directory online.
+* Go to [Plugins screen](https://codex.wordpress.org/Administration_Screens#Plugins) and find the newly uploaded Plugin in the list.
+* Click **Activate** to activate it.
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/admin-header.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/admin-header.php
new file mode 100644
index 00000000..67b91ba9
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/admin-header.php
@@ -0,0 +1,27 @@
+
+
+
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/author-json.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/author-json.php
new file mode 100644
index 00000000..70fb43b2
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/author-json.php
@@ -0,0 +1,34 @@
+set_context(
+ \Activitypub\Activity\Activity::CONTEXT
+);
+
+/*
+ * Action triggerd prior to the ActivityPub profile being created and sent to the client
+ */
+\do_action( 'activitypub_json_author_pre', $user->get__id() );
+
+$options = 0;
+// JSON_PRETTY_PRINT added in PHP 5.4
+if ( \get_query_var( 'pretty' ) ) {
+ $options |= \JSON_PRETTY_PRINT; // phpcs:ignore
+}
+
+$options |= \JSON_HEX_TAG | \JSON_HEX_AMP | \JSON_HEX_QUOT;
+
+/*
+ * Options to be passed to json_encode()
+ *
+ * @param int $options The current options flags
+ */
+$options = \apply_filters( 'activitypub_json_author_options', $options, $user->get__id() );
+
+\header( 'Content-Type: application/activity+json' );
+echo \wp_json_encode( $user->to_array(), $options );
+
+/*
+ * Action triggerd after the ActivityPub profile has been created and sent to the client
+ */
+\do_action( 'activitypub_json_author_post', $user->get__id() );
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-json.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-json.php
new file mode 100644
index 00000000..7ce6a270
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-json.php
@@ -0,0 +1,34 @@
+set_context(
+ \Activitypub\Activity\Activity::CONTEXT
+);
+
+/*
+ * Action triggerd prior to the ActivityPub profile being created and sent to the client
+ */
+\do_action( 'activitypub_json_author_pre', $user->get__id() );
+
+$options = 0;
+// JSON_PRETTY_PRINT added in PHP 5.4
+if ( \get_query_var( 'pretty' ) ) {
+ $options |= \JSON_PRETTY_PRINT; // phpcs:ignore
+}
+
+$options |= \JSON_HEX_TAG | \JSON_HEX_AMP | \JSON_HEX_QUOT;
+
+/*
+ * Options to be passed to json_encode()
+ *
+ * @param int $options The current options flags
+ */
+$options = \apply_filters( 'activitypub_json_author_options', $options, $user->get__id() );
+
+\header( 'Content-Type: application/activity+json' );
+echo \wp_json_encode( $user->to_array(), $options );
+
+/*
+ * Action triggerd after the ActivityPub profile has been created and sent to the client
+ */
+\do_action( 'activitypub_json_author_post', $user->get__id() );
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-user-followers-list.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-user-followers-list.php
new file mode 100644
index 00000000..1eaa7ee9
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-user-followers-list.php
@@ -0,0 +1,28 @@
+ '',
+ 'welcome' => '',
+ 'followers' => 'active',
+ )
+);
+$table = new \Activitypub\Table\Followers();
+$follower_count = $table->get_user_count();
+// translators: The follower count.
+$followers_template = _n( 'Your blog profile currently has %s follower.', 'Your blog profile currently has %s followers.', $follower_count, 'activitypub' );
+?>
+
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/post-json.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/post-json.php
new file mode 100644
index 00000000..89467c46
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/post-json.php
@@ -0,0 +1,37 @@
+ \Activitypub\get_context() ), $object->to_object()->to_array() );
+
+// filter output
+$json = \apply_filters( 'activitypub_json_post_array', $json );
+
+/*
+ * Action triggerd prior to the ActivityPub profile being created and sent to the client
+ */
+\do_action( 'activitypub_json_post_pre' );
+
+$options = 0;
+// JSON_PRETTY_PRINT added in PHP 5.4
+if ( \get_query_var( 'pretty' ) ) {
+ $options |= \JSON_PRETTY_PRINT; // phpcs:ignore
+}
+
+$options |= \JSON_HEX_TAG | \JSON_HEX_AMP | \JSON_HEX_QUOT;
+
+/*
+ * Options to be passed to json_encode()
+ *
+ * @param int $options The current options flags
+ */
+$options = \apply_filters( 'activitypub_json_post_options', $options );
+
+\header( 'Content-Type: application/activity+json' );
+echo \wp_json_encode( $json, $options );
+
+/*
+ * Action triggerd after the ActivityPub profile has been created and sent to the client
+ */
+\do_action( 'activitypub_json_post_post' );
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/settings.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/settings.php
new file mode 100644
index 00000000..642ab164
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/settings.php
@@ -0,0 +1,272 @@
+ 'active',
+ 'welcome' => '',
+ 'followers' => '',
+ )
+);
+?>
+
+
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-followers-list.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-followers-list.php
new file mode 100644
index 00000000..8ea35a73
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-followers-list.php
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+ prepare_items();
+ $table->search_box( 'Search', 'search' );
+ $table->display();
+ ?>
+
+
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-settings.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-settings.php
new file mode 100644
index 00000000..afbb4046
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-settings.php
@@ -0,0 +1,32 @@
+
+
+
+
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/welcome.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/welcome.php
new file mode 100644
index 00000000..cf26cfea
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/welcome.php
@@ -0,0 +1,162 @@
+ '',
+ 'welcome' => 'active',
+ 'followers' => '',
+ )
+);
+?>
+
+
+
+
+
+
ActivityPub, broadcasting your blog to a wider audience. Attract followers, deliver updates, and receive comments from a diverse user base on Mastodon , Friendica , Pleroma , Pixelfed , and all ActivityPub -compliant platforms.', 'activitypub' ), array( 'strong' => array() ) ); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID );
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Site Health page to ensure that your site is compatible and/or use the "Help" tab (in the top right of the settings pages).',
+ 'activitypub'
+ ),
+ \esc_url_raw( admin_url( 'site-health.php' ) )
+ ),
+ 'default'
+ );
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/.phive/phars.xml b/wp-content/upgrade-temp-backup/plugins/authldap/.phive/phars.xml
new file mode 100644
index 00000000..2825dbbc
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/.phive/phars.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/LICENSE.md b/wp-content/upgrade-temp-backup/plugins/authldap/LICENSE.md
new file mode 100644
index 00000000..00217dc5
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/LICENSE.md
@@ -0,0 +1,7 @@
+Copyright
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/README.md b/wp-content/upgrade-temp-backup/plugins/authldap/README.md
new file mode 100644
index 00000000..db54d089
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/README.md
@@ -0,0 +1,95 @@
+# authLDAP
+
+[![Join the chat at https://gitter.im/heiglandreas/authLdap](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/heiglandreas/authLdap?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+
+Use your existing LDAP as authentication-backend for your wordpress!
+
+[![Build Status](https://github.com/heiglandreas/authLdap/actions/workflows/tests.yml/badge.svg)](https://github.com/heiglandreas/authLdap/actions/workflows/tests.yml)
+[![WordPress Stats](https://img.shields.io/wordpress/plugin/dt/authldap.svg)](https://wordpress.org/plugins/authldap/stats/)
+[![WordPress Version](https://img.shields.io/wordpress/plugin/v/authldap.svg)](https://wordpress.org/plugins/authldap/)
+[![WordPress testet](https://img.shields.io/wordpress/v/authldap.svg)](https://wordpress.org/plugins/authldap/)
+[![Code Climate](https://codeclimate.com/github/heiglandreas/authLdap/badges/gpa.svg)](https://codeclimate.com/github/heiglandreas/authLdap)
+[![codecov](https://codecov.io/gh/heiglandreas/authLdap/branch/master/graph/badge.svg?token=AYAhEeWtRQ)](https://codecov.io/gh/heiglandreas/authLdap)
+
+So what are the differences to other Wordpress-LDAP-Authentication-Plugins?
+
+* **Flexible**: You are totaly free in which LDAP-backend to use. Due to the extensive configuration you can
+freely decide how to do the authentication of your users. It simply depends on your
+filters
+* **Independent**: As soon as a user logs in, it is added/updated to the Wordpress' user-database
+to allow wordpress to always use the correct data. You only have to administer your users once.
+* **Failsafe**: Due to the users being created in Wordpress' User-database they can
+also log in when the LDAP-backend currently is gone.
+* **Role-Aware**: You can map Wordpress' roles to values of an existing LDAP-attribute.
+
+## How does the plugin work?
+
+Well, as a matter of fact it is rather simple. The plugin verifies, that the user
+seeking authentification can bind to the LDAP using the provided password.
+
+If that is so, the user is either created or updated in the wordpress-user-database.
+This update includes the provided password (so the wordpress can authenticate users
+even without the LDAP), the users name according to the authLDAP-preferences and
+the status of the user depending on the groups-settings of the authLDAP-preferences
+
+Writing this plugin would not have been as easy as it has been, without the
+wonderfull plugin of Alistair Young from http://www.weblogs.uhi.ac.uk/sm00ay/?p=45
+
+## Configuration
+
+### Usage Settings
+
+* **Enable Authentication via LDAP** Whether you want to enable authLdap for login or not
+* **debug authLdap** When you have problems with authentication via LDAP you can enable a debugging mode here.
+* **Save entered Password** Decide whether passwords will be cached in your wordpress-installation. **Attention:** Without the cache your users will not be able to log into your site when your LDAP is down!
+
+### Server Settings
+
+* **LDAP Uri** This is the URI where your ldap-backend can be reached. More information are actually on the Configuration page
+* **Filter** This is the real McCoy! The filter you define here specifies how a user will be found. Before applying the filter a %s will be replaced with the given username. This means, when a user logs in using ‘foobar’ as username the following happens:
+
+ * **uid=%1$s** check for any LDAP-Entry that has an attribute ‘uid’ with value ‘foobar’
+ * **(&(objectclass=posixAccount)(|(uid=%1$s)(mail=%1$s)))** check for any LDAP-Entry that has an attribute ‘objectclass’ with value ‘posixAccout’ and either a UID- or a mail-attribute with value ‘foobar’
+
+ This filter is rather powerfull if used wisely.
+
+### Creating Users
+
+* **Name-Attribute** Which Attribute from the LDAP contains the Full or the First name of the user trying to log in. This defaults to name
+* **Second Name Attribute** If the above Name-Attribute only contains the First Name of the user you can here specify an Attribute that contains the second name. This field is empty by default
+* **User-ID Attribute** This field will be used as login-name for wordpress. Please give the Attribute, that is used to identify the user. This should be the same as you used in the above Filter-Option. This field defaults to uid
+* **Mail Attribute** Which Attribute holds the eMail-Address of the user? If more than one eMail-Address are stored in the LDAP, only the first given is used. This field defaults to mail
+* **Web-Attribute** If your users have a personal page (URI) stored in the LDAP, it can be provided here. This field is empty by default
+
+### User-Groups for Roles
+
+* **Group-Attribute** This is the attribute that defines the Group-ID that can be matched against the Groups defined further down This field defaults to gidNumber.
+* **Group-Filter** Here you can add the filter for selecting groups for the currentlly logged in user The Filter should contain the string %s which will be replaced by the login-name of the currently logged in
+
+
+## FAQ
+
+
+ Can I change a users password with this plugin?
+ Short Answer: No ! Long Answer: As the users credentials are not
+ only used for a wordpress-site when you authenticate against an LDAP but for
+ many other services also chances are great that there is a centralized place
+ where password-changes shall be made. We'll later allow inclusion of a link
+ to such a place but currently it's not available. And as password-hashing and
+ where to store it requires deeper insight into the LDAP-Server then most users
+ have and admins are willing to give, password changes are out of scope of this
+ plugin. If you know exactyl what you do, you might want to have a look at
+
+ issue 54
+ wherer a way of adding it is described!
+
+ Can I add a user to the LDAP when she creates a user-account on wordpress?
+ Short Answer: No ! Long Answer: Even though that is technically possible
+ it's not in the scope of this plugin. As creating a user in an LDAP often involves
+ an administrative process that has already been implemented in your departments
+ administration it doesn't make sense to rebuild that - in most cases highly
+ individual - process in this plugin. If you know exactly what you do, have a look at
+ issue 65
+ where wtfiwtz shows how to implement that feature.
+
+
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/authldap/SECURITY.md
new file mode 100644
index 00000000..ef57848c
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/SECURITY.md
@@ -0,0 +1,18 @@
+# Security-Policy
+
+## Supported Versions
+
+| Version | Supported |
+| ------- |--------------------|
+| 2.x | :white_check_mark: |
+| 1.x | :x: |
+
+## Reporting a Vulnerability
+
+* Check our security.txt file for details on how to contact us
+* Contact us before publicly disclosing the issue anywhere else
+
+This plugin is developed as OpenSource under the MIT licence.
+There is no money earned from it. Therefore we are not able to
+provide any bug-bounties whatsoever. You will be mentioned in the
+release notes of a fix-release though.
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/authLdap.css b/wp-content/upgrade-temp-backup/plugins/authldap/authLdap.css
new file mode 100644
index 00000000..674dc34d
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/authLdap.css
@@ -0,0 +1,13 @@
+.row {
+ overflow: hidden;
+ padding-top: 10px;
+}
+
+.element {
+ float: right;
+ text-align: left;
+}
+
+.authldap-options input[type=text] {
+ width: 100%;
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/authLdap.php b/wp-content/upgrade-temp-backup/plugins/authldap/authLdap.php
new file mode 100644
index 00000000..542ea85e
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/authLdap.php
@@ -0,0 +1,946 @@
+
+Author URI: http://andreas.heigl.org
+License: MIT
+License URI: https://opensource.org/licenses/MIT
+*/
+
+// phpcs:disable PSR1.Files.SideEffects
+
+use Org_Heigl\AuthLdap\LdapList;
+use Org_Heigl\AuthLdap\LdapUri;
+use Org_Heigl\AuthLdap\Manager\Ldap;
+use Org_Heigl\AuthLdap\UserRoleHandler;
+use Org_Heigl\AuthLdap\Wrapper\LdapFactory;
+
+require_once __DIR__ . '/src/Wrapper/LdapInterface.php';
+require_once __DIR__ . '/src/Exception/Error.php';
+require_once __DIR__ . '/src/Exception/InvalidLdapUri.php';
+require_once __DIR__ . '/src/Exception/Error.php';
+require_once __DIR__ . '/src/Exception/InvalidLdapUri.php';
+require_once __DIR__ . '/src/Exception/MissingValidLdapConnection.php';
+require_once __DIR__ . '/src/Exception/SearchUnsuccessfull.php';
+require_once __DIR__ . '/src/Manager/Ldap.php';
+require_once __DIR__ . '/src/Wrapper/Ldap.php';
+require_once __DIR__ . '/src/Wrapper/LdapFactory.php';
+require_once __DIR__ . '/src/LdapList.php';
+require_once __DIR__ . '/src/LdapUri.php';
+require_once __DIR__ . '/src/UserRoleHandler.php';
+
+function authLdap_debug($message)
+{
+ if (authLdap_get_option('Debug')) {
+ error_log('[AuthLDAP] ' . $message, 0);
+ }
+}
+
+
+function authLdap_addmenu()
+{
+ if (!is_multisite()) {
+ add_options_page(
+ 'AuthLDAP',
+ 'AuthLDAP',
+ 'manage_options',
+ basename(__FILE__),
+ 'authLdap_options_panel'
+ );
+ } else {
+ add_submenu_page(
+ 'settings.php',
+ 'AuthLDAP',
+ 'AuthLDAP',
+ 'manage_options',
+ 'authldap',
+ 'authLdap_options_panel'
+ );
+ }
+}
+
+function authLdap_get_post($name, $default = '')
+{
+ return isset($_POST[$name]) ? $_POST[$name] : $default;
+}
+
+function authLdap_options_panel()
+{
+ // inclusde style sheet
+ wp_enqueue_style('authLdap-style', plugin_dir_url(__FILE__) . 'authLdap.css');
+
+ if (($_SERVER['REQUEST_METHOD'] == 'POST') && array_key_exists('ldapOptionsSave', $_POST)) {
+ if (!isset($_POST['authLdapNonce'])) {
+ die("Go away!");
+ }
+ if (!wp_verify_nonce($_POST['authLdapNonce'],'authLdapNonce')) {
+ die("Go away!");
+ }
+
+ $new_options = [
+ 'Enabled' => authLdap_get_post('authLDAPAuth', false),
+ 'CachePW' => authLdap_get_post('authLDAPCachePW', false),
+ 'URI' => authLdap_get_post('authLDAPURI'),
+ 'URISeparator' => authLdap_get_post('authLDAPURISeparator'),
+ 'StartTLS' => authLdap_get_post('authLDAPStartTLS', false),
+ 'Filter' => authLdap_get_post('authLDAPFilter'),
+ 'NameAttr' => authLdap_get_post('authLDAPNameAttr'),
+ 'SecName' => authLdap_get_post('authLDAPSecName'),
+ 'UidAttr' => authLdap_get_post('authLDAPUidAttr'),
+ 'MailAttr' => authLdap_get_post('authLDAPMailAttr'),
+ 'WebAttr' => authLdap_get_post('authLDAPWebAttr'),
+ 'Groups' => authLdap_get_post('authLDAPGroups', []),
+ 'GroupSeparator' => authLdap_get_post('authLDAPGroupSeparator', ','),
+ 'Debug' => authLdap_get_post('authLDAPDebug', false),
+ 'GroupBase' => authLdap_get_post('authLDAPGroupBase'),
+ 'GroupAttr' => authLdap_get_post('authLDAPGroupAttr'),
+ 'GroupFilter' => authLdap_get_post('authLDAPGroupFilter'),
+ 'DefaultRole' => authLdap_get_post('authLDAPDefaultRole'),
+ 'GroupEnable' => authLdap_get_post('authLDAPGroupEnable', false),
+ 'GroupOverUser' => authLdap_get_post('authLDAPGroupOverUser', false),
+ 'DoNotOverwriteNonLdapUsers' => authLdap_get_post('authLDAPDoNotOverwriteNonLdapUsers', false),
+ 'UserRead' => authLdap_get_post('authLDAPUseUserAccount', false),
+ ];
+ if (authLdap_set_options($new_options)) {
+ echo "";
+ } else {
+ echo "";
+ }
+ }
+
+ // Do some initialization for the admin-view
+ $authLDAP = authLdap_get_option('Enabled');
+ $authLDAPCachePW = authLdap_get_option('CachePW');
+ $authLDAPURI = authLdap_get_option('URI');
+ $authLDAPURISeparator = authLdap_get_option('URISeparator');
+ $authLDAPStartTLS = authLdap_get_option('StartTLS');
+ $authLDAPFilter = authLdap_get_option('Filter');
+ $authLDAPNameAttr = authLdap_get_option('NameAttr');
+ $authLDAPSecName = authLdap_get_option('SecName');
+ $authLDAPMailAttr = authLdap_get_option('MailAttr');
+ $authLDAPUidAttr = authLdap_get_option('UidAttr');
+ $authLDAPWebAttr = authLdap_get_option('WebAttr');
+ $authLDAPGroups = authLdap_get_option('Groups');
+ $authLDAPGroupSeparator = authLdap_get_option('GroupSeparator');
+ $authLDAPDebug = authLdap_get_option('Debug');
+ $authLDAPGroupBase = authLdap_get_option('GroupBase');
+ $authLDAPGroupAttr = authLdap_get_option('GroupAttr');
+ $authLDAPGroupFilter = authLdap_get_option('GroupFilter');
+ $authLDAPDefaultRole = authLdap_get_option('DefaultRole');
+ $authLDAPGroupEnable = authLdap_get_option('GroupEnable');
+ $authLDAPGroupOverUser = authLdap_get_option('GroupOverUser');
+ $authLDAPDoNotOverwriteNonLdapUsers = authLdap_get_option('DoNotOverwriteNonLdapUsers');
+ $authLDAPUseUserAccount = authLdap_get_option('UserRead');
+
+ $tChecked = ($authLDAP) ? ' checked="checked"' : '';
+ $tDebugChecked = ($authLDAPDebug) ? ' checked="checked"' : '';
+ $tPWChecked = ($authLDAPCachePW) ? ' checked="checked"' : '';
+ $tGroupChecked = ($authLDAPGroupEnable) ? ' checked="checked"' : '';
+ $tGroupOverUserChecked = ($authLDAPGroupOverUser) ? ' checked="checked"' : '';
+ $tStartTLSChecked = ($authLDAPStartTLS) ? ' checked="checked"' : '';
+ $tDoNotOverwriteNonLdapUsers = ($authLDAPDoNotOverwriteNonLdapUsers) ? ' checked="checked"' : '';
+ $tUserRead = ($authLDAPUseUserAccount) ? ' checked="checked"' : '';
+
+ $roles = new WP_Roles();
+
+ $action = $_SERVER['REQUEST_URI'];
+ if (!extension_loaded('ldap')) {
+ echo 'The LDAP-Extension is not available on your '
+ . 'WebServer. Therefore Everything you can alter here does not '
+ . 'make any sense!
';
+ }
+
+ include dirname(__FILE__) . '/view/admin.phtml';
+}
+
+/**
+ * get a LDAP server object
+ *
+ * throws exception if there is a problem connecting
+ *
+ * @conf boolean authLDAPDebug true, if debugging should be turned on
+ * @conf string authLDAPURI LDAP server URI
+ *
+ * @return Org_Heigl\AuthLdap\LdapList LDAP server object
+ */
+function authLdap_get_server()
+{
+ static $_ldapserver = null;
+ if (is_null($_ldapserver)) {
+ $authLDAPDebug = authLdap_get_option('Debug');
+ $authLDAPURI = explode(
+ authLdap_get_option('URISeparator', ' '),
+ authLdap_get_option('URI')
+ );
+ $authLDAPStartTLS = authLdap_get_option('StartTLS');
+
+ //$authLDAPURI = 'ldap:/foo:bar@server/trallala';
+ authLdap_debug('connect to LDAP server');
+ require_once dirname(__FILE__) . '/src/LdapList.php';
+ $_ldapserver = new LdapList();
+ foreach ($authLDAPURI as $uri) {
+ $_ldapserver->addLdap(new Ldap(
+ new LdapFactory(),
+ LdapUri::fromString($uri),
+ $authLDAPStartTLS
+ ));
+ }
+ }
+ return $_ldapserver;
+}
+
+
+/**
+ * This method authenticates a user using either the LDAP or, if LDAP is not
+ * available, the local database
+ *
+ * For this we store the hashed passwords in the WP_Database to ensure working
+ * conditions even without an LDAP-Connection
+ *
+ * @param null|WP_User|WP_Error
+ * @param string $username
+ * @param string $password
+ * @param boolean $already_md5
+ * @return boolean true, if login was successfull or false, if it wasn't
+ * @conf boolean authLDAP true, if authLDAP should be used, false if not. Defaults to false
+ * @conf string authLDAPFilter LDAP filter to use to find correct user, defaults to '(uid=%s)'
+ * @conf string authLDAPNameAttr LDAP attribute containing user (display) name, defaults to 'name'
+ * @conf string authLDAPSecName LDAP attribute containing second name, defaults to ''
+ * @conf string authLDAPMailAttr LDAP attribute containing user e-mail, defaults to 'mail'
+ * @conf string authLDAPUidAttr LDAP attribute containing user id (the username we log on with), defaults to 'uid'
+ * @conf string authLDAPWebAttr LDAP attribute containing user website, defaults to ''
+ * @conf string authLDAPDefaultRole default role for authenticated user, defaults to ''
+ * @conf boolean authLDAPGroupEnable true, if we try to map LDAP groups to Wordpress roles
+ * @conf boolean authLDAPGroupOverUser true, if LDAP Groups have precedence over existing user roles
+ */
+function authLdap_login($user, $username, $password, $already_md5 = false)
+{
+ // don't do anything when authLDAP is disabled
+ if (!authLdap_get_option('Enabled')) {
+ authLdap_debug(
+ 'LDAP disabled in AuthLDAP plugin options (use the first option in the AuthLDAP options to enable it)'
+ );
+ return $user;
+ }
+
+ // If the user has already been authenticated (only in that case we get a
+ // WP_User-Object as $user) we skip LDAP-authentication and simply return
+ // the existing user-object
+ if ($user instanceof WP_User) {
+ authLdap_debug(sprintf(
+ 'User %s has already been authenticated - skipping LDAP-Authentication',
+ $user->get('nickname')
+ ));
+ return $user;
+ }
+
+ authLdap_debug("User '$username' logging in");
+
+ if ($username == 'admin') {
+ authLdap_debug('Doing nothing for possible local user admin');
+ return $user;
+ }
+
+ global $wpdb, $error;
+ try {
+ $authLDAP = authLdap_get_option('Enabled');
+ $authLDAPFilter = authLdap_get_option('Filter');
+ $authLDAPNameAttr = authLdap_get_option('NameAttr');
+ $authLDAPSecName = authLdap_get_option('SecName');
+ $authLDAPMailAttr = authLdap_get_option('MailAttr');
+ $authLDAPUidAttr = authLdap_get_option('UidAttr');
+ $authLDAPWebAttr = authLdap_get_option('WebAttr');
+ $authLDAPDefaultRole = authLdap_get_option('DefaultRole');
+ $authLDAPGroupEnable = authLdap_get_option('GroupEnable');
+ $authLDAPGroupOverUser = authLdap_get_option('GroupOverUser');
+ $authLDAPUseUserAccount = authLdap_get_option('UserRead');
+
+ if (!$username) {
+ authLdap_debug('Username not supplied: return false');
+ return false;
+ }
+
+ if (!$password) {
+ authLdap_debug('Password not supplied: return false');
+ $error = __('Error : The password field is empty.');
+ return false;
+ }
+ // First check for valid values and set appropriate defaults
+ if (!$authLDAPFilter) {
+ $authLDAPFilter = '(uid=%s)';
+ }
+ if (!$authLDAPNameAttr) {
+ $authLDAPNameAttr = 'name';
+ }
+ if (!$authLDAPMailAttr) {
+ $authLDAPMailAttr = 'mail';
+ }
+ if (!$authLDAPUidAttr) {
+ $authLDAPUidAttr = 'uid';
+ }
+
+ // If already_md5 is TRUE, then we're getting the user/password from the cookie. As we don't want
+ // to store LDAP passwords in any
+ // form, we've already replaced the password with the hashed username and LDAP_COOKIE_MARKER
+ if ($already_md5) {
+ if ($password == md5($username) . md5($ldapCookieMarker)) {
+ authLdap_debug('cookie authentication');
+ return true;
+ }
+ }
+
+ // Remove slashes as noted on https://github.com/heiglandreas/authLdap/issues/108
+ $password = stripslashes_deep($password);
+
+ // No cookie, so have to authenticate them via LDAP
+ $result = false;
+ try {
+ authLdap_debug('about to do LDAP authentication');
+ $result = authLdap_get_server()->Authenticate($username, $password, $authLDAPFilter);
+ } catch (Exception $e) {
+ authLdap_debug('LDAP authentication failed with exception: ' . $e->getMessage());
+ return false;
+ }
+
+ // Make optional querying from the admin account #213
+ if (!authLdap_get_option('UserRead')) {
+ // Rebind with the default credentials after the user has been loged in
+ // Otherwise the credentials of the user trying to login will be used
+ // This fixes #55
+ authLdap_get_server()->bind();
+ }
+
+ if (true !== $result) {
+ authLdap_debug('LDAP authentication failed');
+ // TODO what to return? WP_User object, true, false, even an WP_Error object...
+ // all seem to fall back to normal wp user authentication
+ return;
+ }
+
+ authLdap_debug('LDAP authentication successful');
+ $attributes = array_values(
+ array_filter(
+ apply_filters(
+ 'authLdap_filter_attributes',
+ [
+ $authLDAPNameAttr,
+ $authLDAPSecName,
+ $authLDAPMailAttr,
+ $authLDAPWebAttr,
+ $authLDAPUidAttr,
+ ]
+ )
+ )
+ );
+
+ try {
+ $attribs = authLdap_get_server()->search(
+ sprintf($authLDAPFilter, $username),
+ $attributes
+ );
+ // First get all the relevant group informations so we can see if
+ // whether have been changes in group association of the user
+ if (!isset($attribs[0]['dn'])) {
+ authLdap_debug('could not get user attributes from LDAP');
+ throw new UnexpectedValueException('dn has not been returned');
+ }
+ if (!isset($attribs[0][strtolower($authLDAPUidAttr)][0])) {
+ authLdap_debug('could not get user attributes from LDAP');
+ throw new UnexpectedValueException('The user-ID attribute has not been returned');
+ }
+
+ $dn = $attribs[0]['dn'];
+ $realuid = $attribs[0][strtolower($authLDAPUidAttr)][0];
+ } catch (Exception $e) {
+ authLdap_debug('Exception getting LDAP user: ' . $e->getMessage());
+ return false;
+ }
+
+ $uid = authLdap_get_uid($realuid);
+
+ // This fixes #172
+ if (true == authLdap_get_option('DoNotOverwriteNonLdapUsers', false)) {
+ if (!get_user_meta($uid, 'authLDAP')) {
+ return null;
+ }
+ }
+
+ $roles = [];
+
+ // we only need this if either LDAP groups are disabled or
+ // if the WordPress role of the user overrides LDAP groups
+ if (!$authLDAPGroupEnable || !$authLDAPGroupOverUser) {
+ $role = authLdap_user_role($uid);
+ if ($role !== '') {
+ $roles[] = $role;
+ }
+ // TODO, this needs to be revised, it seems, like authldap is taking only the first role
+ // even if in WP there are assigned multiple.
+ }
+
+ // do LDAP group mapping if needed
+ // (if LDAP groups override worpress user role, $role is still empty)
+ if (empty($roles) && $authLDAPGroupEnable) {
+ $mappedRoles = authLdap_groupmap($realuid, $dn);
+ if ($mappedRoles !== []) {
+ $roles = $mappedRoles;
+ authLdap_debug('role from group mapping: ' . json_encode($roles));
+ }
+ }
+
+ // if we don't have a role yet, use default role
+ if (empty($roles) && !empty($authLDAPDefaultRole)) {
+ authLdap_debug('no role yet, set default role');
+ $roles[] = $authLDAPDefaultRole;
+ }
+
+ if (empty($roles)) {
+ // Sorry, but you are not in any group that is allowed access
+ trigger_error('no group found');
+ authLdap_debug('user is not in any group that is allowed access');
+ return false;
+ } else {
+ $wp_roles = new WP_Roles();
+ // not sure if this is needed, but it can't hurt
+
+ // Get rid of unexisting roles.
+ foreach ($roles as $k => $v) {
+ if (!$wp_roles->is_role($v)) {
+ unset($k);
+ }
+ }
+
+ // check if single role or an empty array provided
+ if (empty($roles)) {
+ trigger_error('no group found');
+ authLdap_debug('role is invalid');
+ return false;
+ }
+ }
+
+ // from here on, the user has access!
+ // now, lets update some user details
+ $user_info = [];
+ $user_info['user_login'] = $realuid;
+ $user_info['user_email'] = '';
+ $user_info['user_nicename'] = '';
+
+ // first name
+ if (isset($attribs[0][strtolower($authLDAPNameAttr)][0])) {
+ $user_info['first_name'] = $attribs[0][strtolower($authLDAPNameAttr)][0];
+ }
+
+ // last name
+ if (isset($attribs[0][strtolower($authLDAPSecName)][0])) {
+ $user_info['last_name'] = $attribs[0][strtolower($authLDAPSecName)][0];
+ }
+
+ // mail address
+ if (isset($attribs[0][strtolower($authLDAPMailAttr)][0])) {
+ $user_info['user_email'] = $attribs[0][strtolower($authLDAPMailAttr)][0];
+ }
+
+ // website
+ if (isset($attribs[0][strtolower($authLDAPWebAttr)][0])) {
+ $user_info['user_url'] = $attribs[0][strtolower($authLDAPWebAttr)][0];
+ }
+ // display name, nickname, nicename
+ if (array_key_exists('first_name', $user_info)) {
+ $user_info['display_name'] = $user_info['first_name'];
+ $user_info['nickname'] = $user_info['first_name'];
+ $user_info['user_nicename'] = sanitize_title_with_dashes($user_info['first_name']);
+ if (array_key_exists('last_name', $user_info)) {
+ $user_info['display_name'] .= ' ' . $user_info['last_name'];
+ $user_info['nickname'] .= ' ' . $user_info['last_name'];
+ $user_info['user_nicename'] .= '_' . sanitize_title_with_dashes($user_info['last_name']);
+ }
+ }
+ $user_info['user_nicename'] = substr($user_info['user_nicename'], 0, 50);
+
+ // optionally store the password into the wordpress database
+ if (authLdap_get_option('CachePW')) {
+ // Password will be hashed inside wp_update_user or wp_insert_user
+ $user_info['user_pass'] = $password;
+ } else {
+ // clear the password
+ $user_info['user_pass'] = '';
+ }
+
+ // add uid if user exists
+ if ($uid) {
+ // found user in the database
+ authLdap_debug('The LDAP user has an entry in the WP-Database');
+ $user_info['ID'] = $uid;
+ unset($user_info['display_name'], $user_info['nickname']);
+ $userid = wp_update_user($user_info);
+ } else {
+ // new wordpress account will be created
+ authLdap_debug('The LDAP user does not have an entry in the WP-Database, a new WP account will be created');
+
+ $userid = wp_insert_user($user_info);
+ }
+
+ // if the user exists, wp_insert_user will update the existing user record
+ if (is_wp_error($userid)) {
+ authLdap_debug('Error creating user : ' . $userid->get_error_message());
+ trigger_error('Error creating user: ' . $userid->get_error_message());
+ return $userid;
+ }
+
+ // Update user roles.
+ $user = new \WP_User($userid);
+
+ /**
+ * Add hook for custom User-Role assignment
+ *
+ * @param WP_User $user This user-object will be returned. Can be modified as necessary in the actions.
+ * @param array $roles
+ */
+ do_action('authldap_user_roles', $user, $roles);
+
+ /**
+ * Add hook for custom updates
+ *
+ * @param int $userid User ID.
+ * @param array $attribs [0] Attributes retrieved from LDAP for the user.
+ */
+ do_action('authLdap_login_successful', $userid, $attribs[0]);
+
+ authLdap_debug('user id = ' . $userid);
+
+ // flag the user as an ldap user so we can hide the password fields in the user profile
+ update_user_meta($userid, 'authLDAP', true);
+
+ // return a user object upon positive authorization
+ return $user;
+ } catch (Exception $e) {
+ authLdap_debug($e->getMessage() . '. Exception thrown in line ' . $e->getLine());
+ trigger_error($e->getMessage() . '. Exception thrown in line ' . $e->getLine());
+ }
+}
+
+/**
+ * Get user's user id
+ *
+ * Returns null if username not found
+ *
+ * @param string $username username
+ * @param string user id, null if not found
+ */
+function authLdap_get_uid($username)
+{
+ global $wpdb;
+
+ // find out whether the user is already present in the database
+ $uid = $wpdb->get_var(
+ $wpdb->prepare(
+ "SELECT ID FROM {$wpdb->users} WHERE user_login = %s",
+ $username
+ )
+ );
+ if ($uid) {
+ authLdap_debug("Existing user, uid = {$uid}");
+ return $uid;
+ } else {
+ return null;
+ }
+}
+
+/**
+ * Get the user's current role
+ *
+ * Returns empty string if not found.
+ *
+ * @param int $uid wordpress user id
+ * @return string role, empty if none found
+ */
+function authLdap_user_role($uid)
+{
+ global $wpdb, $wp_roles;
+
+ if (!$uid) {
+ return '';
+ }
+
+ /** @var array $usercapabilities */
+ $usercapabilities = get_user_meta($uid, "{$wpdb->prefix}capabilities", true);
+ if (!is_array($usercapabilities)) {
+ return '';
+ }
+
+ /** @var array} $editable_roles */
+ $editable_roles = $wp_roles->roles;
+
+ // By using this approach we are now using the order of the roles from the WP_Roles object
+ // and not from the capabilities any more.
+ $userroles = array_keys(array_intersect_key($editable_roles, $usercapabilities));
+ $role = ($userroles !== []) ? $userroles[0] : '';
+
+ authLdap_debug("Existing user's role: {$role}");
+ return $role;
+}
+
+/**
+ * Get LDAP groups for user and map to role
+ *
+ * @param string $username
+ * @param string $dn
+ * @return array role, empty array if no mapping found, first or all role(s) found otherwise
+ * @conf array authLDAPGroups, associative array, role => ldap_group
+ * @conf string authLDAPGroupBase, base dn to look up groups
+ * @conf string authLDAPGroupAttr, ldap attribute that holds name of group
+ * @conf string authLDAPGroupFilter, LDAP filter to find groups. can contain %s and %dn% placeholders
+ */
+function authLdap_groupmap($username, $dn)
+{
+ $authLDAPGroups = authLdap_sort_roles_by_capabilities(
+ authLdap_get_option('Groups')
+ );
+ $authLDAPGroupBase = authLdap_get_option('GroupBase');
+ $authLDAPGroupAttr = authLdap_get_option('GroupAttr');
+ $authLDAPGroupFilter = authLdap_get_option('GroupFilter');
+ $authLDAPGroupSeparator = authLdap_get_option('GroupSeparator');
+ if (!$authLDAPGroupAttr) {
+ $authLDAPGroupAttr = 'gidNumber';
+ }
+ if (!$authLDAPGroupFilter) {
+ $authLDAPGroupFilter = '(&(objectClass=posixGroup)(memberUid=%s))';
+ }
+ if (!$authLDAPGroupSeparator) {
+ $authLDAPGroupSeparator = ',';
+ }
+
+ if (!is_array($authLDAPGroups) || count(array_filter(array_values($authLDAPGroups))) == 0) {
+ authLdap_debug('No group names defined');
+ return [];
+ }
+
+ try {
+ // To allow searches based on the DN instead of the uid, we replace the
+ // string %dn% with the users DN.
+ $authLDAPGroupFilter = str_replace(
+ '%dn%',
+ ldap_escape($dn, '', LDAP_ESCAPE_FILTER),
+ $authLDAPGroupFilter
+ );
+ authLdap_debug('Group Filter: ' . json_encode($authLDAPGroupFilter));
+ authLdap_debug('Group Base: ' . $authLDAPGroupBase);
+ $groups = authLdap_get_server()->search(
+ sprintf($authLDAPGroupFilter, ldap_escape($username, '', LDAP_ESCAPE_FILTER)),
+ [$authLDAPGroupAttr],
+ $authLDAPGroupBase
+ );
+ } catch (Exception $e) {
+ authLdap_debug('Exception getting LDAP group attributes: ' . $e->getMessage());
+ return [];
+ }
+
+ $grp = [];
+ for ($i = 0; $i < $groups ['count']; $i++) {
+ if ($authLDAPGroupAttr == "dn") {
+ $grp[] = $groups[$i]['dn'];
+ } else {
+ for ($k = 0; $k < $groups[$i][strtolower($authLDAPGroupAttr)]['count']; $k++) {
+ $grp[] = $groups[$i][strtolower($authLDAPGroupAttr)][$k];
+ }
+ }
+ }
+
+ authLdap_debug('LDAP groups: ' . json_encode($grp));
+
+ // Check whether the user is member of one of the groups that are
+ // allowed acces to the blog. If the user is not member of one of
+ // The groups throw her out! ;-)
+ $roles = [];
+ foreach ($authLDAPGroups as $key => $val) {
+ $currentGroup = explode($authLDAPGroupSeparator, $val);
+ // Remove whitespaces around the group-ID
+ $currentGroup = array_map('trim', $currentGroup);
+ if (0 < count(array_intersect($currentGroup, $grp))) {
+ $roles[] = $key;
+ }
+ }
+
+ // Default: If the user is member of more than one group only the first one
+ // will be taken into account!
+ // This filter allows you to return multiple user roles. WordPress
+ // supports this functionality, but not natively via UI from Users
+ // overview (you need to use a plugin). However, it's still widely used,
+ // for example, by WooCommerce, etc. Use if you know what you're doing.
+ if (apply_filters('authLdap_allow_multiple_roles', false) === false && count($roles) > 1) {
+ $roles = array_slice($roles, 0, 1);
+ }
+
+ authLdap_debug("Roles from LDAP group: " . json_encode($roles));
+ return $roles;
+}
+
+/**
+ * This function disables the password-change fields in the users preferences.
+ *
+ * It does not make sense to authenticate via LDAP and then allow the user to
+ * change the password only in the wordpress database. And changing the password
+ * LDAP-wide can not be the scope of Wordpress!
+ *
+ * Whether the user is an LDAP-User or not is determined using the authLDAP-Flag
+ * of the users meta-informations
+ *
+ * @return false, if the user whose prefs are viewed is an LDAP-User, true if
+ * he isn't
+ * @conf boolean authLDAP
+ */
+function authLdap_show_password_fields($return, $user)
+{
+ if (!$user) {
+ return true;
+ }
+
+ if (get_user_meta($user->ID, 'authLDAP')) {
+ return false;
+ }
+
+ return $return;
+}
+
+/**
+ * This function disables the password reset for a user.
+ *
+ * It does not make sense to authenticate via LDAP and then allow the user to
+ * reset the password only in the wordpress database. And changing the password
+ * LDAP-wide can not be the scope of Wordpress!
+ *
+ * Whether the user is an LDAP-User or not is determined using the authLDAP-Flag
+ * of the users meta-informations
+ *
+ * @author chaplina (https://github.com/chaplina)
+ * @conf boolean authLDAP
+ * @return false, if the user is an LDAP-User, true if he isn't
+ */
+function authLdap_allow_password_reset($return, $userid)
+{
+ if (!(isset($userid))) {
+ return true;
+ }
+
+ if (get_user_meta($userid, 'authLDAP')) {
+ return false;
+ }
+ return $return;
+}
+
+/**
+ * Sort the given roles by number of capabilities
+ *
+ * @param array $roles
+ *
+ * @return array
+ */
+function authLdap_sort_roles_by_capabilities($roles)
+{
+ global $wpdb;
+ $myRoles = get_option($wpdb->get_blog_prefix() . 'user_roles');
+
+ authLdap_debug(print_r($roles, true));
+ uasort($myRoles, 'authLdap_sortByCapabilitycount');
+
+ $return = [];
+
+ foreach ($myRoles as $key => $role) {
+ if (isset($roles[$key])) {
+ $return[$key] = $roles[$key];
+ }
+ }
+
+ authLdap_debug(print_r($return, true));
+ return $return;
+}
+
+/**
+ * Sort according to the number of capabilities
+ *
+ * @param $a
+ * @param $b
+ */
+function authLdap_sortByCapabilitycount($a, $b)
+{
+ if (count($a['capabilities']) > count($b['capabilities'])) {
+ return -1;
+ }
+ if (count($a['capabilities']) < count($b['capabilities'])) {
+ return 1;
+ }
+
+ return 0;
+}
+
+/**
+ * Load AuthLDAP Options
+ *
+ * Sets and stores defaults if options are not up to date
+ */
+function authLdap_load_options($reload = false)
+{
+ static $options = null;
+
+ // the current version for options
+ $option_version_plugin = 1;
+
+ $optionFunction = 'get_option';
+ if (is_multisite()) {
+ $optionFunction = 'get_site_option';
+ }
+ if (is_null($options) || $reload) {
+ $options = $optionFunction('authLDAPOptions', []);
+ }
+
+ // check if option version has changed (or if it's there at all)
+ if (!isset($options['Version']) || ($options['Version'] != $option_version_plugin)) {
+ // defaults for all options
+ $options_default = [
+ 'Enabled' => false,
+ 'CachePW' => false,
+ 'URI' => '',
+ 'URISeparator' => ' ',
+ 'Filter' => '', // '(uid=%s)'
+ 'NameAttr' => '', // 'name'
+ 'SecName' => '',
+ 'UidAttr' => '', // 'uid'
+ 'MailAttr' => '', // 'mail'
+ 'WebAttr' => '',
+ 'Groups' => [],
+ 'Debug' => false,
+ 'GroupAttr' => '', // 'gidNumber'
+ 'GroupFilter' => '', // '(&(objectClass=posixGroup)(memberUid=%s))'
+ 'DefaultRole' => '',
+ 'GroupEnable' => true,
+ 'GroupOverUser' => true,
+ 'Version' => $option_version_plugin,
+ 'DoNotOverwriteNonLdapUsers' => false,
+ ];
+
+ // check if we got a version
+ if (!isset($options['Version'])) {
+ // we just changed to the new option format
+ // read old options, then delete them
+ $old_option_new_option = [
+ 'authLDAP' => 'Enabled',
+ 'authLDAPCachePW' => 'CachePW',
+ 'authLDAPURI' => 'URI',
+ 'authLDAPFilter' => 'Filter',
+ 'authLDAPNameAttr' => 'NameAttr',
+ 'authLDAPSecName' => 'SecName',
+ 'authLDAPUidAttr' => 'UidAttr',
+ 'authLDAPMailAttr' => 'MailAttr',
+ 'authLDAPWebAttr' => 'WebAttr',
+ 'authLDAPGroups' => 'Groups',
+ 'authLDAPDebug' => 'Debug',
+ 'authLDAPGroupAttr' => 'GroupAttr',
+ 'authLDAPGroupFilter' => 'GroupFilter',
+ 'authLDAPDefaultRole' => 'DefaultRole',
+ 'authLDAPGroupEnable' => 'GroupEnable',
+ 'authLDAPGroupOverUser' => 'GroupOverUser',
+ ];
+ foreach ($old_option_new_option as $old_option => $new_option) {
+ $value = get_option($old_option, null);
+ if (!is_null($value)) {
+ $options[$new_option] = $value;
+ }
+ delete_option($old_option);
+ }
+ delete_option('authLDAPCookieMarker');
+ delete_option('authLDAPCookierMarker');
+ }
+
+ // set default for all options that are missing
+ foreach ($options_default as $key => $default) {
+ if (!isset($options[$key])) {
+ $options[$key] = $default;
+ }
+ }
+
+ // set new version and save
+ $options['Version'] = $option_version_plugin;
+ update_option('authLDAPOptions', $options);
+ }
+ return $options;
+}
+
+/**
+ * Get an individual option
+ */
+function authLdap_get_option($optionname, $default = null)
+{
+ $options = authLdap_load_options();
+ if (isset($options[$optionname]) && $options[$optionname]) {
+ return $options[$optionname];
+ }
+
+ if (null !== $default) {
+ return $default;
+ }
+
+ //authLdap_debug('option name invalid: ' . $optionname);
+ return null;
+}
+
+/**
+ * Set new options
+ */
+function authLdap_set_options($new_options = [])
+{
+ // initialize the options with what we currently have
+ $options = authLdap_load_options();
+
+ // set the new options supplied
+ foreach ($new_options as $key => $value) {
+ $options[$key] = $value;
+ }
+
+ // store options
+ $optionFunction = 'update_option';
+ if (is_multisite()) {
+ $optionFunction = 'update_site_option';
+ }
+ if ($optionFunction('authLDAPOptions', $options)) {
+ // reload the option cache
+ authLdap_load_options(true);
+
+ return true;
+ }
+
+ // could not set options
+ return false;
+}
+
+/**
+ * Do not send an email after changing the password or the email of the user!
+ *
+ * @param boolean $result The initial resturn value
+ * @param array $user The old userdata
+ * @param array $newUserData The changed userdata
+ *
+ * @return bool
+ */
+function authLdap_send_change_email($result, $user, $newUserData)
+{
+ if (get_user_meta($user['ID'], 'authLDAP')) {
+ return false;
+ }
+
+ return $result;
+}
+
+$hook = is_multisite() ? 'network_' : '';
+add_action($hook . 'admin_menu', 'authLdap_addmenu');
+add_filter('show_password_fields', 'authLdap_show_password_fields', 10, 2);
+add_filter('allow_password_reset', 'authLdap_allow_password_reset', 10, 2);
+add_filter('authenticate', 'authLdap_login', 10, 3);
+/** This only works from WP 4.3.0 on */
+add_filter('send_password_change_email', 'authLdap_send_change_email', 10, 3);
+add_filter('send_email_change_email', 'authLdap_send_change_email', 10, 3);
+$handler = new UserRoleHandler();
+add_action('authldap_user_roles', [$handler, 'addRolesToUser'], 10, 2);
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/phpcs.xml b/wp-content/upgrade-temp-backup/plugins/authldap/phpcs.xml
new file mode 100644
index 00000000..e7a652c4
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/phpcs.xml
@@ -0,0 +1,22 @@
+
+
+ authLdap codestyle
+ ./src
+ ./authLdap.php
+ ./tests
+
+
+
+
+ ./vendor/autoload.php
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/readme.txt b/wp-content/upgrade-temp-backup/plugins/authldap/readme.txt
new file mode 100644
index 00000000..1c6084da
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/readme.txt
@@ -0,0 +1,161 @@
+=== authLdap ===
+Contributors: heiglandreas
+Tags: ldap, auth, authentication, active directory, AD, openLDAP, Open Directory
+Requires at least: 2.5.0
+Tested up to: 6.3.0
+Requires PHP: 7.4
+Stable tag: trunk
+License: MIT
+License URI: https://opensource.org/licenses/MIT
+
+Use your existing LDAP flexible as authentication backend for WordPress
+
+== Description ==
+
+Use your existing LDAP as authentication-backend for your wordpress!
+
+So what are the differences to other Wordpress-LDAP-Authentication-Plugins?
+
+* Flexible: You are totaly free in which LDAP-backend to use. Due to the extensive configuration you can freely decide how to do the authentication of your users. It simply depends on your filters
+* Independent: As soon as a user logs in, it is added/updated to the Wordpress' user-database to allow wordpress to always use the correct data. You only have to administer your users once.
+* Failsafe: Due to the users being created in Wordpress' User-database they can also log in when the LDAP-backend currently is gone.
+* Role-Aware: You can map Wordpress' roles to values of an existing LDAP-attribute.
+
+For more Information on the configuration have a look at https://github.com/heiglandreas/authLdap
+
+== Installation ==
+
+1. Upload the extracted folder `authLdap` to the `/wp-content/plugins/` directory
+2. Activate the plugin through the 'Plugins' menu in WordPress
+3. Configure the Plugin via the 'authLdap'-Configuration-Page.
+
+== Frequently Asked Questions ==
+
+= Where can I find more Informations about the plugin? =
+
+Go to https://github.com/heiglandreas/authLdap
+
+= Where can I report issues with the plugin? =
+
+Please use the issuetracker at https://github.com/heiglandreas/authLdap/issues
+
+= Where can I report sensitive security issues with the plugin? =
+
+In essence: Report a security vulnerability at https://github.com/heiglandreas/authLdap/security/advisories/new
+
+Please see https://github.com/heiglandreas/authLdap/blob/master/SECURITY.md for more details
+
+== Changelog ==
+
+= 2.5.9 =
+
+* Adds information about security-contacts
+* Addresses CVE-2023-41655
+
+= 2.5.8 =
+
+* Fix regression from 2.5.7
+
+= 2.5.7 =
+
+* Fix regressions from 2.5.4
+* Fix CI system
+
+= 2.5.4 =
+* Update Tested up to
+
+= 2.5.3 =
+* Fix issue with broken role-assignement in combination with WooCommerce
+* Fix spelling issue
+* Allow DN as role-definition
+
+= 2.5.0 =
+* Ignore the order of capabilities to tell the role. In addition the filter `editable_roles` can be used to limit the roles
+
+= 2.4.11 =
+* Fix issue with running on PHP8.1
+
+= 2.4.9 =
+* Improve group-assignement UI
+
+= 2.4.8 =
+* Make textfields in settings-page wider
+
+= 2.4.7 =
+* Replace deprecated function
+* Fix undefined index
+* Add filter for retrieving other params at login (authLdap_filter_attributes)
+* Add do_action after successfull login (authLdap_login_successful)
+
+= 2.4.0 =
+* Allow to use environment variables for LDAP-URI configuration
+
+= 2.3.0 =
+* Allow to not overwrite existing WordPress-Users with LDAP-Users as that can be a security issue.
+
+= 2.1.0 =
+* Add search-base for groups. This might come in handy for multisite-instances
+
+= 2.0.0 =
+* This new release adds Multi-Site support. It will no longer be possible to use this plugin just in one subsite of a multisite installation!
+* Adds a warning screen to the config-section when no LDAPextension could be found
+* Fixes an issue with the max-length of the username
+
+= 1.5.1 =
+* Fixes an issue with escaped backslashes and quotes
+
+= 1.5.0 =
+* Allows parts of the LDAP-URI to be URLEncoded
+* Drops support for PHP 5.4
+
+= 1.4.20 =
+* Allows multiple LDAP-servers to be queried (given that they use the same attributes)
+* Fixes issue with URL-Encoded informations (see https://github.com/heiglandreas/authLdap/issues/108)
+
+= 1.4.19 =
+* Adds support for TLS
+
+= 1.4.14 =
+* Update to showing password-fields check (thanks to @chaplina)
+
+= 1.4.13 =
+* Removed generation of default email-address (thanks to @henryk)
+* Fixes password-hashing when caching passwords (thanks to @litinoveweedle)
+* Removes the possibility to reset a password for LDAP-based users (thanks to @chaplina)
+* Removes the password-change-Email from 4.3 on (thanks to @litinoveweedle)
+* Fixes double authentication-attempt (that resulted in failed authentication) (thanks to @litinoveweedle)
+
+= 1.4.10 =
+* Cleanup by removing deprecated code
+* Fixes issues with undefined variables
+* Enables internal option-versioning
+* Setting users nickname initially to the realname instead of the uid
+* Fixes display of password-change possibility in users profile-page
+= 1.4.9 =
+* Fixed an issue with changing display name on every login
+* Use proper way of looking up user-roles in setups w/o DB-prefix
+= 1.4.8 =
+* Updated version string
+= 1.4.7 =
+* Use default user to retrieve group menberships and not logging in user.
+* return the UID from the LDAP instead of the value given by the user
+* remove unnecessary checkbox
+* Adds a testsuite
+* Fixes PSR2 violations
+
+[…]
+
+= 1.2.1 =
+* Fixed an issue with group-ids
+* Moved the code to GitHub (https://github.com/heiglandreas/authLdap)
+= 1.1.0 =
+* Changed the login-process. Now users that are not allowed to login due to
+missing group-memberships are not created within your blog as was the standard
+until Version 1.0.3 - Thanks to alex@tayts.com
+* Changed the default mail-address that is created when no mail-address can be
+retrieved from the LDAP from me@example.com to $username@example.com so that
+a new user can be created even though the mail address already exists in your
+blog - Also thanks to alex@tayts.com
+* Added support for WordPress-Table-prefixes as the capabilities of a user
+are interlany stored in a field that is named "$tablePrefix_capabilities" -
+again thanks to alex@tayts.com and also to sim0n of silicium.mine.nu
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/security.txt b/wp-content/upgrade-temp-backup/plugins/authldap/security.txt
new file mode 100644
index 00000000..1d1f2736
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/security.txt
@@ -0,0 +1,6 @@
+Contact: mailto://andreas@heigl.net
+Contact: https://github.com/heiglandreas/authLdap/security/advisories/new
+Expires: 2026-09-07T10:00:00.000Z
+Encryption: https://andreas.heigl.org/publickey/
+Encryption: https://heigl.org/.well-known/openpgpkey/hu/sfqdema7hgdj146cwzo4rxgsoujxis31
+Preferred-Languages: en,de
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/Error.php b/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/Error.php
new file mode 100644
index 00000000..42771c8e
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/Error.php
@@ -0,0 +1,24 @@
+
+ *
+ * Licenses under the MIT-license. For details see the included file LICENSE.md
+ */
+
+declare(strict_types=1);
+
+namespace Org_Heigl\AuthLdap\Exception;
+
+use Exception;
+
+class Error extends Exception
+{
+ public function __construct($message, $line = null)
+ {
+ parent::__construct($message);
+ if ($line) {
+ $this -> line = $line;
+ }
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/InvalidLdapUri.php b/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/InvalidLdapUri.php
new file mode 100644
index 00000000..da667b01
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/InvalidLdapUri.php
@@ -0,0 +1,74 @@
+
+ *
+ * Licenses under the MIT-license. For details see the included file LICENSE.md
+ */
+
+declare(strict_types=1);
+
+namespace Org_Heigl\AuthLdap\Exception;
+
+use RuntimeException;
+
+use function sprintf;
+
+class InvalidLdapUri extends RuntimeException
+{
+ public static function cannotparse(string $ldapUri): self
+ {
+ return new self(sprintf(
+ '%1$s seems not to be a valid URI',
+ $ldapUri
+ ));
+ }
+
+ public static function wrongSchema(string $uri): self
+ {
+ return new self(sprintf(
+ '%1$s does not start with a valid schema',
+ $uri
+ ));
+ }
+
+ public static function noSchema(string $uri): self
+ {
+ return new self(sprintf(
+ '%1$s does not provide a schema',
+ $uri
+ ));
+ }
+
+ public static function noEnvironmentVariableSet(string $uri): self
+ {
+ return new self(sprintf(
+ 'The environment variable %1$s does not provide a URI',
+ $uri
+ ));
+ }
+
+ public static function noServerProvided(string $uri): self
+ {
+ return new self(sprintf(
+ 'The LDAP-URI %1$s does not provide a server',
+ $uri
+ ));
+ }
+
+ public static function noSearchBaseProvided(string $uri): self
+ {
+ return new self(sprintf(
+ 'The LDAP-URI %1$s does not provide a search-base',
+ $uri
+ ));
+ }
+
+ public static function invalidSearchBaseProvided(string $uri): self
+ {
+ return new self(sprintf(
+ 'The LDAP-URI %1$s does not provide a valid search-base',
+ $uri
+ ));
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/MissingValidLdapConnection.php b/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/MissingValidLdapConnection.php
new file mode 100644
index 00000000..6c108f6a
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/MissingValidLdapConnection.php
@@ -0,0 +1,23 @@
+
+ *
+ * Licenses under the MIT-license. For details see the included file LICENSE.md
+ */
+
+declare(strict_types=1);
+
+namespace Org_Heigl\AuthLdap\Exception;
+
+use RuntimeException;
+
+class MissingValidLdapConnection extends Error
+{
+ public static function get(): self
+ {
+ return new self(sprintf(
+ 'No valid LDAP connection available'
+ ));
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/SearchUnsuccessfull.php b/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/SearchUnsuccessfull.php
new file mode 100644
index 00000000..1159f428
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/src/Exception/SearchUnsuccessfull.php
@@ -0,0 +1,24 @@
+
+ *
+ * Licenses under the MIT-license. For details see the included file LICENSE.md
+ */
+
+declare(strict_types=1);
+
+namespace Org_Heigl\AuthLdap\Exception;
+
+use RuntimeException;
+
+class SearchUnsuccessfull extends RuntimeException
+{
+ public static function fromSearchFilter(string $filter): self
+ {
+ return new self(sprintf(
+ 'Search for %1$s was not successfull',
+ $filter
+ ));
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/src/LdapList.php b/wp-content/upgrade-temp-backup/plugins/authldap/src/LdapList.php
new file mode 100644
index 00000000..bc24c33d
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/src/LdapList.php
@@ -0,0 +1,93 @@
+
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author Andreas Heigl
+ * @copyright Andreas Heigl
+ * @license http://www.opensource.org/licenses/mit-license.php MIT-License
+ * @since 07.07.2016
+ * @link http://github.com/heiglandreas/authLDAP
+ */
+
+namespace Org_Heigl\AuthLdap;
+
+use Exception;
+use Org_Heigl\AuthLdap\Exception\Error;
+use Org_Heigl\AuthLdap\Exception\SearchUnsuccessfull;
+use Org_Heigl\AuthLdap\Manager\Ldap;
+
+class LdapList
+{
+ /**
+ * @var Ldap[]
+ */
+ protected $items = [];
+
+ public function addLdap(Ldap $ldap)
+ {
+ $this->items[] = $ldap;
+ }
+
+ public function authenticate($username, $password, $filter = '(uid=%s)')
+ {
+ /** @var Ldap $item */
+ foreach ($this->items as $key => $item) {
+ if (! $item->authenticate($username, $password, $filter)) {
+ unset($this->items[$key]);
+ continue;
+ }
+ return true;
+ }
+
+ return false;
+ }
+
+ public function bind()
+ {
+ $allFailed = true;
+ foreach ($this->items as $key => $item) {
+ try {
+ $item->bind();
+ } catch (\Exception $e) {
+ unset($this->items[$key]);
+ continue;
+ }
+ $allFailed = false;
+ }
+
+ if ($allFailed) {
+ throw new Error('No bind successfull');
+ }
+
+ return true;
+ }
+
+ public function search($filter, $attributes = array('uid'), $base = '')
+ {
+ foreach ($this->items as $item) {
+ try {
+ $result = $item->search($filter, $attributes, $base);
+ return $result;
+ } catch (Exception $e) {
+ }
+ }
+
+ throw SearchUnsuccessfull::fromSearchFilter($filter);
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/src/LdapUri.php b/wp-content/upgrade-temp-backup/plugins/authldap/src/LdapUri.php
new file mode 100644
index 00000000..2d2169fc
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/src/LdapUri.php
@@ -0,0 +1,179 @@
+
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author Andreas Heigl
+ * @copyright Andreas Heigl
+ * @license http://www.opensource.org/licenses/mit-license.php MIT-License
+ * @since 19.07.2020
+ * @link http://github.com/heiglandreas/authLDAP
+ */
+
+declare(strict_types=1);
+
+namespace Org_Heigl\AuthLdap;
+
+use Org_Heigl\AuthLdap\Exception\InvalidLdapUri;
+
+use function array_map;
+use function error_get_last;
+use function getenv;
+use function is_array;
+use function is_string;
+use function parse_url;
+use function preg_replace_callback;
+use function rawurlencode;
+use function strlen;
+use function strpos;
+use function substr;
+use function trim;
+use function urldecode;
+
+final class LdapUri
+{
+ private $server;
+
+ private $scheme;
+
+ private $port = 389;
+
+ private string $baseDn;
+
+ private $username = '';
+
+ private $password = '';
+
+ private function __construct(string $uri)
+ {
+ if (!preg_match('/^(ldap|ldaps|env)/', $uri)) {
+ throw InvalidLdapUri::wrongSchema($uri);
+ }
+
+ if (strpos($uri, 'env:') === 0) {
+ $newUri = getenv(substr($uri, 4));
+ if (false === $newUri) {
+ throw InvalidLdapUri::noEnvironmentVariableSet($uri);
+ }
+ $uri = (string) $newUri;
+ }
+
+ $uri = $this->injectEnvironmentVariables($uri);
+
+ $array = parse_url($uri);
+ if (!is_array($array)) {
+ throw InvalidLdapUri::cannotparse($uri);
+ }
+
+ $url = array_map(static function ($item) {
+ if (is_int($item)) {
+ return $item;
+ }
+ return urldecode($item);
+ }, $array);
+
+
+ if (!isset($url['scheme'])) {
+ throw InvalidLdapUri::noSchema($uri);
+ }
+ if (0 !== strpos($url['scheme'], 'ldap')) {
+ throw InvalidLdapUri::wrongSchema($uri);
+ }
+ if (!isset($url['host'])) {
+ throw InvalidLdapUri::noServerProvided($uri);
+ }
+ if (!isset($url['path'])) {
+ throw InvalidLdapUri::noSearchBaseProvided($uri);
+ }
+ if (1 === strlen($url['path'])) {
+ throw InvalidLdapUri::invalidSearchBaseProvided($uri);
+ }
+
+ $this->server = $url['host'];
+ $this->scheme = $url['scheme'];
+ $this->baseDn = substr($url['path'], 1);
+ if (isset($url['user'])) {
+ $this->username = $url['user'];
+ }
+ if ('' === trim($this->username)) {
+ $this->username = 'anonymous';
+ }
+ if (isset($url['pass'])) {
+ $this->password = $url['pass'];
+ }
+ if ($this->scheme === 'ldaps' && $this->port = 389) {
+ $this->port = 636;
+ }
+
+ // When someone sets the port in the URL we overwrite whatever is set.
+ // We have to assume they know what they are doing!
+ if (isset($url['port'])) {
+ $this->port = $url['port'];
+ }
+ }
+
+ public static function fromString(string $uri): LdapUri
+ {
+ return new LdapUri($uri);
+ }
+
+ private function injectEnvironmentVariables(string $base): string
+ {
+ return preg_replace_callback('/%env:([^%]+)%/', static function (array $matches) {
+ return rawurlencode(getenv($matches[1]));
+ }, $base);
+ }
+
+ public function toString(): string
+ {
+ return $this->scheme . '://' . $this->server . ':' . $this->port;
+ }
+
+ public function __toString()
+ {
+ return $this->toString();
+ }
+
+ public function getUsername(): string
+ {
+ return $this->username;
+ }
+
+ public function getPassword(): string
+ {
+ return $this->password;
+ }
+
+ public function getBaseDn(): string
+ {
+ return $this->baseDn;
+ }
+
+ public function isAnonymous(): bool
+ {
+ if ($this->password === '') {
+ return true;
+ }
+
+ if ($this->username === 'anonymous') {
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/src/Manager/Ldap.php b/wp-content/upgrade-temp-backup/plugins/authldap/src/Manager/Ldap.php
new file mode 100644
index 00000000..9b4c85ba
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/src/Manager/Ldap.php
@@ -0,0 +1,164 @@
+
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * This file handles the basic LDAP-Tasks
+ *
+ * @author Andreas Heigl
+ * @package authLdap
+ * @category authLdap
+ * @since 2008
+ */
+
+namespace Org_Heigl\AuthLdap\Manager;
+
+use Org_Heigl\AuthLdap\Exception\Error;
+use Org_Heigl\AuthLdap\Exception\MissingValidLdapConnection;
+use Org_Heigl\AuthLdap\LdapUri;
+use Org_Heigl\AuthLdap\Wrapper\LdapFactory;
+use Org_Heigl\AuthLdap\Wrapper\LdapInterface;
+
+class Ldap
+{
+ /**
+ * This property contains the connection handle to the ldap-server
+ *
+ * @var LdapInterface|null
+ */
+ private ?LdapInterface $connection;
+
+ private LdapUri $uri;
+
+ private LdapFactory $factory;
+
+ private $starttls;
+
+ public function __construct(LdapFactory $factory, LdapUri $uri, $starttls = false)
+ {
+ $this->starttls = $starttls;
+ $this->uri = $uri;
+ $this->factory = $factory;
+ $this->connection = null;
+ }
+
+ /**
+ * Connect to the given LDAP-Server
+ */
+ public function connect(): self
+ {
+ $this->disconnect();
+
+ $this->connection = $this->factory->createFromLdapUri($this->uri->toString());
+ $this->connection->setOption(LDAP_OPT_PROTOCOL_VERSION, 3);
+ $this->connection->setOption(LDAP_OPT_REFERRALS, 0);
+ //if configured try to upgrade encryption to tls for ldap connections
+ if ($this->starttls) {
+ $this->connection->startTls();
+ }
+ return $this;
+ }
+
+ /**
+ * Disconnect from a resource if one is available
+ */
+ public function disconnect(): self
+ {
+ if (null !== $this->connection) {
+ $this->connection->unbind();
+ }
+ $this->connection = null;
+ return $this;
+ }
+
+ /**
+ * Bind to an LDAP-Server with the given credentials
+ *
+ * @throws Error
+ */
+ public function bind(): self
+ {
+ if (!$this->connection) {
+ $this->connect();
+ }
+ if (null === $this->connection) {
+ throw MissingValidLdapConnection::get();
+ }
+ if ($this->uri->isAnonymous()) {
+ $bind = $this->connection->bind();
+ } else {
+ $bind = $this->connection->bind($this->uri->getUsername(), $this->uri->getPassword());
+ }
+ if (!$bind) {
+ throw new Error('bind was not successfull: ' . $this->connection->error());
+ }
+ return $this;
+ }
+
+ /**
+ * This method does the actual ldap-serch.
+ *
+ * This is using the filter $filter for retrieving the attributes
+ * $attributes
+ *
+ * @return array
+ * @throws Error
+ */
+ public function search(string $filter, array $attributes = ['uid'], ?string $base = ''): array
+ {
+ if (null === $this->connection) {
+ throw new Error('No resource handle available');
+ }
+ if (!$base) {
+ $base = $this->uri->getBaseDn();
+ }
+ $result = $this->connection->search($base, $filter, $attributes);
+ if ($result === false) {
+ throw new Error('no result found');
+ }
+ $info = $this->connection->getEntries($result);
+ if ($info === false) {
+ throw new Error('invalid results found');
+ }
+ return $info;
+ }
+
+ /**
+ * This method authenticates the user $username using the
+ * password $password
+ *
+ * @param string $filter OPTIONAL This parameter defines the Filter to be used
+ * when searchin for the username. This MUST contain the string '%s' which
+ * will be replaced by the vaue given in $username
+ * @throws Error
+ */
+ public function authenticate(string $username, string $password, string $filter = '(uid=%s)'): bool
+ {
+ $this->connect();
+ $this->bind();
+ $res = $this->search(sprintf($filter, $this->factory->escape($username, '', LDAP_ESCAPE_FILTER)));
+ if ($res ['count'] !== 1) {
+ return false;
+ }
+
+ $dn = $res[0]['dn'];
+ return $username && $password && $this->connection->bind($dn, $password);
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/src/UserRoleHandler.php b/wp-content/upgrade-temp-backup/plugins/authldap/src/UserRoleHandler.php
new file mode 100644
index 00000000..8966980f
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/src/UserRoleHandler.php
@@ -0,0 +1,54 @@
+
+ *
+ * Licenses under the MIT-license. For details see the included file LICENSE.md
+ */
+
+declare(strict_types=1);
+
+namespace Org_Heigl\AuthLdap;
+
+use WP_User;
+
+use function array_search;
+use function in_array;
+use function var_dump;
+
+class UserRoleHandler
+{
+ /**
+ * @param WP_User $user
+ * @param string[] $roles
+ * @return void
+ */
+ public function addRolesToUser(WP_User $user, $roles) : void
+ {
+ if ($roles === []) {
+ return;
+ }
+
+ if ($user->roles == $roles) {
+ return;
+ }
+
+ // Remove unused roles from existing.
+ foreach ($user->roles as $role) {
+ if (!in_array($role, $roles)) {
+ // Remove unused roles.
+ $user->remove_role($role);
+ continue;
+ }
+ // Remove the existing role from roles.
+ if (($key = array_search($role, $roles)) !== false) {
+ unset($roles[$key]);
+ }
+ }
+
+ // Add new ones if not already assigned.
+ foreach ($roles as $role) {
+ $user->add_role($role);
+ }
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/Ldap.php b/wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/Ldap.php
new file mode 100644
index 00000000..530de8e8
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/Ldap.php
@@ -0,0 +1,92 @@
+
+ *
+ * Licenses under the MIT-license. For details see the included file LICENSE.md
+ */
+
+declare(strict_types=1);
+
+namespace Org_Heigl\AuthLdap\Wrapper;
+
+use function ldap_bind;
+use function ldap_connect;
+use function ldap_error;
+use function ldap_escape;
+use function ldap_get_entries;
+use function ldap_set_option;
+use function ldap_start_tls;
+use function ldap_unbind;
+
+final class Ldap implements LdapInterface
+{
+ private $connection;
+
+ public function __construct(string $ldapUri)
+ {
+ $this->connection = ldap_connect($ldapUri);
+ }
+
+ public function bind($dn = null, $password = null)
+ {
+ if (null === $dn && null === $password) {
+ return ldap_bind($this->connection);
+ }
+ return ldap_bind($this->connection, $dn, $password);
+ }
+
+ public function unbind()
+ {
+ return ldap_unbind($this->connection);
+ }
+
+ public function setOption($option, $value)
+ {
+ return ldap_set_option($this->connection, $option, $value);
+ }
+
+ public function startTls()
+ {
+ return ldap_start_tls($this->connection);
+ }
+
+ public function error()
+ {
+ return ldap_error($this->connection);
+ }
+
+ public function errno()
+ {
+ return ldap_errno($this->connection);
+ }
+
+ public function search(
+ $base,
+ $filter,
+ array $attributes = [],
+ $attributes_only = 0,
+ $sizelimit = -1,
+ $timelimit = -1
+ ) {
+ return ldap_search(
+ $this->connection,
+ $base,
+ $filter,
+ $attributes,
+ $attributes_only,
+ $sizelimit,
+ $timelimit
+ );
+ }
+
+ public function getEntries($search_result)
+ {
+ return ldap_get_entries($this->connection, $search_result);
+ }
+
+ public static function escape(string $value, string $ignore = '', int $flags = 0): string
+ {
+ return ldap_escape($value, $ignore, $flags);
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/LdapFactory.php b/wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/LdapFactory.php
new file mode 100644
index 00000000..d8abbbbe
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/LdapFactory.php
@@ -0,0 +1,24 @@
+
+ *
+ * Licenses under the MIT-license. For details see the included file LICENSE.md
+ */
+
+declare(strict_types=1);
+
+namespace Org_Heigl\AuthLdap\Wrapper;
+
+class LdapFactory
+{
+ public function createFromLdapUri(string $ldapUri): LdapInterface
+ {
+ return new Ldap($ldapUri);
+ }
+
+ public function escape($value, $ignore = '', $flags = 0): string
+ {
+ return Ldap::escape($value, $ignore, $flags);
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/LdapInterface.php b/wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/LdapInterface.php
new file mode 100644
index 00000000..d6f7721d
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/src/Wrapper/LdapInterface.php
@@ -0,0 +1,39 @@
+
+ *
+ * Licenses under the MIT-license. For details see the included file LICENSE.md
+ */
+
+declare(strict_types=1);
+
+namespace Org_Heigl\AuthLdap\Wrapper;
+
+interface LdapInterface
+{
+ public function bind($dn = null, $password = null);
+
+ public function unbind();
+
+ public function setOption($option, $value);
+
+ public function startTls();
+
+ public function error();
+
+ public function errno();
+
+ public function search(
+ $base,
+ $filter,
+ array $attributes = [],
+ $attributes_only = 0,
+ $sizelimit = -1,
+ $timelimit = -1
+ );
+
+ public function getEntries($search_result);
+
+ public static function escape(string $value, string $ignore = '', int $flags = 0): string;
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/authldap/view/admin.phtml b/wp-content/upgrade-temp-backup/plugins/authldap/view/admin.phtml
new file mode 100644
index 00000000..0c55b319
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/authldap/view/admin.phtml
@@ -0,0 +1,454 @@
+
+ * @copyright ©2014-2014 Andreas Heigl
+ * @license http://www.opesource.org/licenses/mit-license.php MIT-License
+ * @version 0.0
+ * @since 19.12.14
+ * @link https://github.com/heiglandreas/authLdap
+ */
+?>
+
+
Caveat: The LDAP-extension is not loaded!
+ Without that extension it is not possible to query an LDAP-Server! Please have a look
+ at
the PHP-Installation page
+
+
+
AuthLDAP Options
+
+
+ General Usage of authLDAP
+
+
+
+ General Server Settings
+
+
+
+
+ Settings for creating new Users
+
+
+
+
+
+
+
Groups for Roles
+
+
+
+
+
Role - group mapping
+
+ You can set multiple values per role by separating them with a coma
+ The values are empty by default
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wp-content/upgrade-temp-backup/plugins/companion-auto-update/admin/dashboard.php b/wp-content/upgrade-temp-backup/plugins/companion-auto-update/admin/dashboard.php
index 4bb68d1b..9a136a13 100644
--- a/wp-content/upgrade-temp-backup/plugins/companion-auto-update/admin/dashboard.php
+++ b/wp-content/upgrade-temp-backup/plugins/companion-auto-update/admin/dashboard.php
@@ -30,7 +30,7 @@ if( isset( $_POST['submit'] ) ) {
$themes = isset( $_POST['themes'] ) ? sanitize_text_field( $_POST['themes'] ) : '';
$minor = isset( $_POST['minor'] ) ? sanitize_text_field( $_POST['minor'] ) : '';
$major = isset( $_POST['major'] ) ? sanitize_text_field( $_POST['major'] ) : '';
- $translations = isset( $_POST['translations'] ) ? sanitize_text_field( $_POST['translations'] ) : '';
+ $translations = isset( $_POST['translations'] ) ? sanitize_text_field( $_POST['translations'] ) : '';
$wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'plugins'", $plugins ) );
$wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'themes'", $themes ) );
@@ -39,11 +39,11 @@ if( isset( $_POST['submit'] ) ) {
$wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'translations'", $translations ) );
// Emails
- $send = isset( $_POST['cau_send'] ) ? sanitize_text_field( $_POST['cau_send'] ) : '';
+ $send = isset( $_POST['cau_send'] ) ? sanitize_text_field( $_POST['cau_send'] ) : '';
$sendupdate = isset( $_POST['cau_send_update'] ) ? sanitize_text_field( $_POST['cau_send_update'] ) : '';
$sendoutdated = isset( $_POST['cau_send_outdated'] ) ? sanitize_text_field( $_POST['cau_send_outdated'] ) : '';
- $wpemails = isset( $_POST['wpemails'] ) ? sanitize_text_field( $_POST['wpemails'] ) : '';
- $email = isset( $_POST['cau_email'] ) ? sanitize_text_field( $_POST['cau_email'] ) : '';
+ $wpemails = isset( $_POST['wpemails'] ) ? sanitize_text_field( $_POST['wpemails'] ) : '';
+ $email = isset( $_POST['cau_email'] ) ? sanitize_text_field( $_POST['cau_email'] ) : '';
$html_or_text = isset( $_POST['html_or_text'] ) ? sanitize_text_field( $_POST['html_or_text'] ) : 'html';
$dbupdateemails = isset( $_POST['dbupdateemails'] ) ? sanitize_text_field( $_POST['dbupdateemails'] ) : '';
diff --git a/wp-content/upgrade-temp-backup/plugins/companion-auto-update/cau_emails.php b/wp-content/upgrade-temp-backup/plugins/companion-auto-update/cau_emails.php
index a04f3b81..082458fc 100644
--- a/wp-content/upgrade-temp-backup/plugins/companion-auto-update/cau_emails.php
+++ b/wp-content/upgrade-temp-backup/plugins/companion-auto-update/cau_emails.php
@@ -49,17 +49,8 @@ function cau_set_email() {
// Mail format
function cau_is_html() {
-
- // Check if cau_get_db_value() function exists.
if ( !function_exists( 'cau_get_db_value' ) ) require_once( plugin_dir_path( __FILE__ ) . 'cau_function.php' );
-
- // Check if html
- if( cau_get_db_value( 'html_or_text' ) == 'html' ) {
- $html = true;
- } else {
- $html = false;
- }
-
+ return ( cau_get_db_value( 'html_or_text' ) == 'html' ) ? true : false;
}
// Set the content for the emails about pending updates
diff --git a/wp-content/upgrade-temp-backup/plugins/companion-auto-update/cau_functions.php b/wp-content/upgrade-temp-backup/plugins/companion-auto-update/cau_functions.php
index e97c835a..b07060ba 100644
--- a/wp-content/upgrade-temp-backup/plugins/companion-auto-update/cau_functions.php
+++ b/wp-content/upgrade-temp-backup/plugins/companion-auto-update/cau_functions.php
@@ -1,102 +1,48 @@
prefix.'auto_updates';
- $cau_configs = $wpdb->get_results( "SELECT name, onoroff FROM {$table_name} WHERE name = 'allow_editor' OR name = 'allow_author'" );
+
+ $allowed_roles[] = 'administrator';
+ $table_name = $wpdb->prefix.'auto_updates';
+ $cau_configs = $wpdb->get_results( "SELECT name, onoroff FROM {$table_name} WHERE name = 'allow_editor' OR name = 'allow_author'" );
foreach ( $cau_configs as $config ) {
if( $config->onoroff == 'on' ) $allowed_roles[] = str_replace( "allow_", "", $config->name );
}
- // Return array
return $allowed_roles;
}
// What user rights can edit plugin settings? TRUE/FALSE
function cau_allowed_user_rights() {
-
- // Current user
- $user = wp_get_current_user();
-
- // Allow roles
- $allowed_roles = cau_allowed_user_rights_array();
-
- // Check
- if ( array_intersect( $allowed_roles, $user->roles ) ) {
- return true;
- } else {
- return false;
- }
-
+ $user = wp_get_current_user(); // Current user
+ $allowed_roles = cau_allowed_user_rights_array(); // Allow roles
+ return array_intersect( $allowed_roles, $user->roles ) ? true : false;
}
// Get database value
function cau_get_db_value( $name, $table = 'auto_updates' ) {
-
global $wpdb;
$table_name = $wpdb->prefix.$table;
$cau_configs = $wpdb->get_results( $wpdb->prepare( "SELECT onoroff FROM {$table_name} WHERE name = '%s'", $name ) );
foreach ( $cau_configs as $config ) return $config->onoroff;
-
}
// Get database value
function cau_get_plugininfo( $check, $field ) {
-
global $wpdb;
$table_name = $wpdb->prefix.'update_log';
$cau_configs = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$table_name} WHERE slug = '%s'", $check ) );
foreach ( $cau_configs as $config ) return $config->$field;
-
}
// Get the set timezone
function cau_get_proper_timezone() {
-
- // WP 5.3 adds the wp_timezone_string function
- if ( !function_exists( 'wp_timezone_string' ) ) {
- $timezone = get_option( 'timezone_string' );
- } else {
- $timezone = wp_timezone_string();
- }
-
- // Should fix an reported issue
- if( $timezone == '+00:00' ) {
- $timezone = 'UTC';
- }
-
- return $timezone;
-
-}
-
-// Copy of the wp_timezone_string for < 5.3 compat
-if ( !function_exists( 'wp_timezone_string' ) ) {
- function wp_timezone_string() {
- $timezone_string = get_option( 'timezone_string' );
-
- if ( $timezone_string ) {
- return $timezone_string;
- }
-
- $offset = (float) get_option( 'gmt_offset' );
- $hours = (int) $offset;
- $minutes = ( $offset - $hours );
-
- $sign = ( $offset < 0 ) ? '-' : '+';
- $abs_hour = abs( $hours );
- $abs_mins = abs( $minutes * 60 );
- $tz_offset = sprintf( '%s%02d:%02d', $sign, $abs_hour, $abs_mins );
-
- return $tz_offset;
- }
+ return ( wp_timezone_string() == '+00:00' ) ? 'UTC' : wp_timezone_string();
}
// List of incompatible plugins
@@ -127,36 +73,10 @@ function cau_incompatiblePlugins() {
// Check if has issues
function cau_pluginHasIssues() {
-
- $return = false;
-
- if( get_option( 'blog_public' ) == 0 && cau_get_db_value( 'ignore_seo' ) != 'yes' ) {
- $return = true;
- }
-
- if( checkAutomaticUpdaterDisabled() ) {
- $return = true;
- }
-
- if( checkCronjobsDisabled() && cau_get_db_value( 'ignore_cron' ) != 'yes' ) {
- $return = true;
- }
-
- if( cau_incorrectDatabaseVersion() ) {
- $return = true;
- }
-
- return $return;
+ return ( cau_pluginIssueCount() > 0 ) ? true : false;
}
function cau_pluginIssueLevels() {
-
- if( checkAutomaticUpdaterDisabled() ) {
- $level = 'high';
- } else {
- $level = 'low';
- }
-
- return $level;
+ return checkAutomaticUpdaterDisabled() ? 'high' : 'low';
}
function cau_pluginIssueCount() {
@@ -186,11 +106,7 @@ function cau_pluginIssueCount() {
return $count;
}
function cau_incorrectDatabaseVersion() {
- if( get_option( "cau_db_version" ) != cau_db_version() ) {
- return true;
- } else {
- return false;
- }
+ return ( get_option( "cau_db_version" ) != cau_db_version() ) ? true : false;
}
// Run custom hooks on plugin update
@@ -209,7 +125,7 @@ function cau_run_custom_hooks_p() {
$listOfAll = get_plugins();
// Number of updates
- $numOfUpdates = 0;
+ $totalNum = 0;
// Loop trough all plugins
foreach ( $listOfAll as $key => $value ) {
@@ -218,49 +134,43 @@ function cau_run_custom_hooks_p() {
$fullPath = $dirr.'/'.$key;
$fileDate = date ( 'YmdHi', filemtime( $fullPath ) );
$fileTime = date ( 'Hi', filemtime( $fullPath ) );
- $updateSched = wp_get_schedule( 'wp_update_plugins' );
-
- // Check when the last update was
- if( $updateSched == 'hourly' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) );
- } elseif( $updateSched == 'twicedaily' ) {
- $lastday = date( 'YmdHi', strtotime( '-12 hours', time() ) );
- } elseif( $updateSched == 'daily' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 day', time() ) );
- } elseif( $updateSched == 'weekly' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 week', time() ) );
- } elseif( $updateSched == 'monthly' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) );
- } else {
- $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) );
- }
-
$update_time = wp_next_scheduled( 'wp_update_plugins' );
$range_start = date( 'Hi', strtotime( '-30 minutes', $update_time ) );
$range_end = date( 'Hi', strtotime( '+30 minutes', $update_time ) );
+ // Check when the last update was
+ switch( wp_get_schedule( 'wp_update_plugins' ) ) {
+ case 'hourly':
+ $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) );
+ break;
+ case 'twicedaily':
+ $lastday = date( 'YmdHi', strtotime( '-12 hour', time() ) );
+ break;
+ case 'daily':
+ $lastday = date( 'YmdHi', strtotime( '-1 day', time() ) );
+ break;
+ case 'weekly':
+ $lastday = date( 'YmdHi', strtotime( '-1 week', time() ) );
+ break;
+ case 'monthly':
+ $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) );
+ break;
+ default:
+ $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) );
+ break;
+ }
+
if( $fileDate >= $lastday ) {
-
- // Push to array
array_push( $allDates, $fileDate );
-
- // Update info
- if( $fileTime > $range_start && $fileTime < $range_end ) {
- $status = __( 'Automatic', 'companion-auto-update' );
- } else {
- $status = __( 'Manual', 'companion-auto-update' );
- }
-
- $numOfUpdates++;
-
+ $status = ( $fileTime > $range_start && $fileTime < $range_end ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' );
+ $totalNum++;
cau_updatePluginInformation( $key, $status );
-
}
}
// If there have been plugin updates run hook
- if( $numOfUpdates >= 1 ) {
+ if( $totalNum >= 1 ) {
do_action( 'cau_after_plugin_update' );
}
@@ -283,40 +193,37 @@ function cau_run_custom_hooks_t() {
$fullPath = $dirr.'/'.$key;
$fileDate = date ( 'YmdHi', filemtime( $fullPath ) );
$fileTime = date ( 'Hi', filemtime( $fullPath ) );
- $updateSched = wp_get_schedule( 'wp_update_themes' );
-
- // Check when the last update was
- if( $updateSched == 'hourly' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) );
- } elseif( $updateSched == 'twicedaily' ) {
- $lastday = date( 'YmdHi', strtotime( '-12 hours', time() ) );
- } elseif( $updateSched == 'daily' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 day', time() ) );
- } elseif( $updateSched == 'weekly' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 week', time() ) );
- } elseif( $updateSched == 'monthly' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) );
- } else {
- $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) );
- }
-
$update_time = wp_next_scheduled( 'wp_update_themes' );
$range_start = date( 'Hi', strtotime( '-30 minutes', $update_time ) );
$range_end = date( 'Hi', strtotime( '+30 minutes', $update_time ) );
+ // Check when the last update was
+ switch( wp_get_schedule( 'wp_update_themes' ) ) {
+ case 'hourly':
+ $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) );
+ break;
+ case 'twicedaily':
+ $lastday = date( 'YmdHi', strtotime( '-12 hour', time() ) );
+ break;
+ case 'daily':
+ $lastday = date( 'YmdHi', strtotime( '-1 day', time() ) );
+ break;
+ case 'weekly':
+ $lastday = date( 'YmdHi', strtotime( '-1 week', time() ) );
+ break;
+ case 'monthly':
+ $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) );
+ break;
+ default:
+ $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) );
+ break;
+ }
+
if( $fileDate >= $lastday ) {
-
- // Push to array
array_push( $allDates, $fileDate );
-
- // Update info
- if( $fileTime > $range_start && $fileTime < $range_end ) {
- $status = __( 'Automatic', 'companion-auto-update' );
- } else {
- $status = __( 'Manual', 'companion-auto-update' );
- }
+ $status = ( $fileTime > $range_start && $fileTime < $range_end ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' );
+ $totalNum++;
cau_updatePluginInformation( $key, $status );
-
}
}
@@ -342,40 +249,37 @@ function cau_run_custom_hooks_c() {
// Get data
$fullPath = ABSPATH.'wp-includes/version.php';
$fileDate = date ( 'YmdHi', filemtime( $fullPath ) );
- $updateSched = wp_get_schedule( 'wp_version_check' );
-
- // Check when the last update was
- if( $updateSched == 'hourly' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) );
- } elseif( $updateSched == 'twicedaily' ) {
- $lastday = date( 'YmdHi', strtotime( '-12 hours', time() ) );
- } elseif( $updateSched == 'daily' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 day', time() ) );
- } elseif( $updateSched == 'weekly' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 week', time() ) );
- } elseif( $updateSched == 'monthly' ) {
- $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) );
- } else {
- $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) );
- }
-
- // Check manual or automatic
$update_time = wp_next_scheduled( 'wp_version_check' );
$range_start = date( 'Hi', strtotime( '-30 minutes', $update_time ) );
$range_end = date( 'Hi', strtotime( '+30 minutes', $update_time ) );
+ // Check when the last update was
+ switch( wp_get_schedule( 'wp_version_check' ) ) {
+ case 'hourly':
+ $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) );
+ break;
+ case 'twicedaily':
+ $lastday = date( 'YmdHi', strtotime( '-12 hour', time() ) );
+ break;
+ case 'daily':
+ $lastday = date( 'YmdHi', strtotime( '-1 day', time() ) );
+ break;
+ case 'weekly':
+ $lastday = date( 'YmdHi', strtotime( '-1 week', time() ) );
+ break;
+ case 'monthly':
+ $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) );
+ break;
+ default:
+ $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) );
+ break;
+ }
+
if( $fileDate >= $lastday ) {
-
- // Update info
- if( $fileDate > $range_start && $fileDate < $range_end ) {
- $status = __( 'Automatic', 'companion-auto-update' );
- } else {
- $status = __( 'Manual', 'companion-auto-update' );
- }
- cau_updatePluginInformation( 'core', $status );
-
+ array_push( $allDates, $fileDate );
+ $status = ( $fileTime > $range_start && $fileTime < $range_end ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' );
$totalNum++;
-
+ cau_updatePluginInformation( 'core', $status );
}
// If there have been plugin updates run hook
@@ -389,28 +293,11 @@ function cau_run_custom_hooks_c() {
function checkAutomaticUpdaterDisabled() {
// I mean, I know this can be done waaaay better but I's quite late and I need to push a fix so take it or leave it untill I decide to fix this :)
-
if ( defined( 'automatic_updater_disabled' ) ) {
- if( doing_filter( 'automatic_updater_disabled' ) ) {
- return true;
- } elseif( constant( 'automatic_updater_disabled' ) == 'true' ) {
- return true;
- } elseif( constant( 'automatic_updater_disabled' ) == 'minor' ) {
- return true;
- } else {
- return false;
- }
+ return ( doing_filter( 'automatic_updater_disabled' ) OR in_array( constant( 'automatic_updater_disabled' ), array( 'true', 'minor' ) ) ) ? true : false;
} else if ( defined( 'AUTOMATIC_UPDATER_DISABLED' ) ) {
- if( doing_filter( 'AUTOMATIC_UPDATER_DISABLED' ) ) {
- return true;
- } elseif( constant( 'AUTOMATIC_UPDATER_DISABLED' ) == 'true' ) {
- return true;
- } elseif( constant( 'AUTOMATIC_UPDATER_DISABLED' ) == 'minor' ) {
- return true;
- } else {
- return false;
- }
+ return ( doing_filter( 'AUTOMATIC_UPDATER_DISABLED' ) OR in_array( constant( 'AUTOMATIC_UPDATER_DISABLED' ), array( 'true', 'minor' ) ) ) ? true : false;
} else {
return false;
@@ -420,13 +307,7 @@ function checkAutomaticUpdaterDisabled() {
// Check if cronjobs are disabled
function checkCronjobsDisabled() {
-
- if ( defined('DISABLE_WP_CRON') && DISABLE_WP_CRON ) {
- return true;
- } else {
- return false;
- }
-
+ return ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) ? true : false;
}
// Menu location
@@ -442,57 +323,30 @@ function active_tab( $page, $identifier = 'tab' ) {
echo _active_tab( $page, $identifier );
}
function _active_tab( $page, $identifier = 'tab' ) {
-
- if( !isset( $_GET[ $identifier ] ) ) {
- $cur_page = '';
- } else {
- $cur_page = $_GET[ $identifier ];
- }
-
+ $cur_page = !isset( $_GET[ $identifier ] ) ? '' : $_GET[ $identifier ];
if( $page == $cur_page ) {
return 'nav-tab-active';
}
-
}
// Get the active subtab
function active_subtab( $page, $identifier = 'tab' ) {
-
- if( !isset( $_GET[ $identifier ] ) ) {
- $cur_page = '';
- } else {
- $cur_page = $_GET[ $identifier ];
- }
-
+ $cur_page = !isset( $_GET[ $identifier ] ) ? '' : $_GET[ $identifier ];
if( $page == $cur_page ) {
echo 'current';
}
-
}
// List of plugins that should not be updated
function donotupdatelist( $filter = 'plugins' ) {
- // Select correct database row
- switch ( $filter ) {
- case 'themes':
- $db_table = 'notUpdateListTh';
- break;
- case 'plugins':
- $db_table = 'notUpdateList';
- break;
- default:
- $db_table = 'notUpdateList';
- break;
- }
-
- // Create list
global $wpdb;
+
+ $db_table = ( $filter == 'themes' ) ? 'notUpdateListTh' : 'notUpdateList';
$table_name = $wpdb->prefix."auto_updates";
$config = $wpdb->get_results( "SELECT * FROM {$table_name} WHERE name = '{$db_table}'");
- $list = $config[0]->onoroff;
- $list = explode( ", ", $list );
+ $list = explode( ", ", $config[0]->onoroff );
$returnList = array();
foreach ( $list as $key ) array_push( $returnList, $key );
@@ -502,381 +356,215 @@ function donotupdatelist( $filter = 'plugins' ) {
}
function plugins_donotupdatelist() {
- // Base array
- $array = array();
+ $array = array();
// Filtered plugins
- $filteredplugins = donotupdatelist( 'plugins' );
- foreach ( $filteredplugins as $filteredplugin ) array_push( $array, $filteredplugin );
+ foreach ( donotupdatelist( 'plugins' ) as $filteredplugin ) {
+ array_push( $array, $filteredplugin );
+ }
// Plugin added to the delay list
- $delayedplugins = cau_delayed_updates__formated();
- foreach ( $delayedplugins as $delayedplugin ) array_push( $array, $delayedplugin );
+ foreach ( cau_delayed_updates__formated() as $delayedplugin ) {
+ array_push( $array, $delayedplugin );
+ }
- // Return array
return $array;
+
}
function themes_donotupdatelist() {
return donotupdatelist( 'themes' );
}
// Show the update log
-function cau_fetch_log( $limit, $format = 'simple' ) {
+function cau_fetch_log( $limiter, $format = 'simple' ) {
- // Database
global $wpdb;
- $updateLog = "update_log";
- $updateLogDB = $wpdb->prefix.$updateLog;
- // Filter log
- if( isset( $_GET['filter'] ) ) {
- $filter = $_GET['filter'];
- } else {
- $filter = 'all';
- }
+ $updateLog = "update_log";
+ $updateLogDB = $wpdb->prefix.$updateLog;
+ $filter = isset( $_GET['filter'] ) ? $_GET['filter'] : 'all';
+ $dateFormat = get_option( 'date_format' );
+ $dateToday = date ( 'ydm' );
+ $log_items = array();
+ $limit = ( $limiter != 'all' ) ? $limiter : false;
- switch( $filter ) {
-
- case 'plugins':
- $plugins = true;
- $themes = false;
- $core = false;
- $translations = false;
- break;
-
- case 'themes':
- $plugins = false;
- $themes = true;
- $core = false;
- $translations = false;
- break;
-
- case 'translations':
- $plugins = false;
- $themes = false;
- $core = false;
- $translations = true;
- break;
-
- default:
- $plugins = true;
- $themes = true;
- $core = true;
- $translations = false;
- break;
- }
-
- // Create arrays
- $pluginNames = array();
- $pluginVersion = array();
- $pluginDates = array();
- $pluginDatesF = array();
- $plugslug = array();
- $type = array();
- $method = array();
-
- // Date format
- $dateFormat = get_option( 'date_format' );
+ $show_plugins = ( in_array( $filter, array( 'plugins', 'all' ) ) ) ? true : false;
+ $show_themes = ( in_array( $filter, array( 'themes', 'all' ) ) ) ? true : false;
+ $show_core = ( $filter == 'all' ) ? true : false;
+ $show_translations = ( $filter == 'translations' ) ? true : false;
// PLUGINS
- if( $plugins ) {
+ if( $show_plugins ) {
- // Check if function exists
- if ( ! function_exists( 'get_plugins' ) ) {
+ // Make sure some required functions exits
+ if ( !function_exists( 'get_plugins' ) ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
- // Where to look for plugins
- $plugdir = plugin_dir_path( __DIR__ );
- $allPlugins = get_plugins();
-
// Loop trough all plugins
- foreach ( $allPlugins as $key => $value) {
+ foreach ( get_plugins() as $key => $value ) {
- // Get plugin data
- $fullPath = $plugdir.'/'.$key;
- $getFile = $path_parts = pathinfo( $fullPath );
- $pluginData = get_plugin_data( $fullPath );
- $pluginSlug = explode( "/", plugin_basename( $key ) );
- $pluginSlug = $pluginSlug[0];
+ // Get data
+ $fullPath = plugin_dir_path( __DIR__ ).'/'.$key;
+ $pluginData = get_plugin_data( $fullPath );
+ $pluginSlug = explode( '/', plugin_basename( $key ) );
+ $pluginSlug = $pluginSlug[0];
- array_push( $plugslug , $pluginSlug );
-
- // Automatic or Manual (non-db-version)
- $date_tod = date ( 'ydm' );
- $fileDay = date ( 'ydm', filemtime( $fullPath ) );
- $fileTime = date ( 'Hi', filemtime( $fullPath ) );
- $updateSched = wp_next_scheduled( 'wp_update_plugins' );
- $range_start = date( 'Hi', strtotime( '-30 minutes', $updateSched ) );
- $range_end = date( 'Hi', strtotime( '+30 minutes', $updateSched ) );
-
- if( $date_tod == $fileDay ) {
-
- if( $fileTime > $range_start && $fileTime < $range_end ) {
- $status = __( 'Automatic', 'companion-auto-update' );
- } else {
- $status = __( 'Manual', 'companion-auto-update' );
- }
-
- array_push( $method , $status );
+ $fileTime = date( 'Hi', filemtime( $fullPath ) );
+ $fileDate = date( 'ydm', filemtime( $fullPath ) );
+ $fileDateTime = strtotime( $fileDate );
+ $updateSched = wp_next_scheduled( 'wp_update_plugins' );
+ if( $dateToday == $fileDate ) {
+ $method = ( $fileTime > date( 'Hi', strtotime( '-30 minutes', $updateSched ) ) && $fileTime < date( 'Hi', strtotime( '+30 minutes', $updateSched ) ) ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' );
} else {
-
- // Get info from database
- if( cau_check_if_exists( $key, 'slug', $updateLog ) ) {
- array_push( $method , cau_get_plugininfo( $key, 'method' ) );
- } else {
- array_push( $method , '-' );
- }
-
+ $method = cau_check_if_exists( $key, 'slug', $updateLog ) ? cau_get_plugininfo( $key, 'method' ) : '-';
}
- // Get plugin name
- foreach ( $pluginData as $dataKey => $dataValue ) {
- if( $dataKey == 'Name') {
- array_push( $pluginNames , $dataValue );
- }
- if( $dataKey == 'Version') {
- array_push( $pluginVersion , $dataValue );
- }
- }
-
- // Get last update date
- $fileDate = date ( 'YmdHi', filemtime( $fullPath ) );
- if( $format == 'table' ) {
- $fileDateF = date_i18n( $dateFormat, filemtime( $fullPath ) );
- $fileDateF .= ' ‐ '.date( 'H:i', filemtime( $fullPath ) );
- } else {
- $fileDateF = date_i18n( $dateFormat, filemtime( $fullPath ) );
- }
- array_push( $pluginDates, $fileDate );
- array_push( $pluginDatesF, $fileDateF );
- array_push( $type, 'Plugin' );
+ $log_items[$fileDateTime.'_'.$pluginSlug] = array(
+ 'type' => 'Plugin',
+ 'slug' => $pluginSlug,
+ 'name' => $pluginData['Name'],
+ 'date' => $fileDateTime,
+ 'version' => $pluginData['Version'],
+ 'method' => $method,
+ );
}
}
// THEMES
- if( $themes ) {
-
- // Where to look for themes
- $themedir = get_theme_root();
- $allThemes = wp_get_themes();
+ if( $show_themes ) {
// Loop trough all themes
- foreach ( $allThemes as $key => $value) {
+ foreach ( wp_get_themes() as $key => $value ) {
- // Get theme data
- $fullPath = $themedir.'/'.$key;
- $getFile = $path_parts = pathinfo( $fullPath );
+ // Get data
+ $fullPath = get_theme_root().'/'.$key;
+ $path_parts = pathinfo( $fullPath );
+ $theme_data = wp_get_theme( $path_parts['filename'] );
- // Get theme name
- $theme_data = wp_get_theme( $path_parts['filename'] );
- $themeName = $theme_data->get( 'Name' );
- $themeVersion = $theme_data->get( 'Version' );
- array_push( $pluginNames , $themeName );
- array_push( $pluginVersion , $themeVersion );
-
- // Automatic or Manual (non-db-version)
- $date_tod = date ( 'ydm' );
- $fileDay = date ( 'ydm', filemtime( $fullPath ) );
- $fileTime = date ( 'Hi', filemtime( $fullPath ) );
- $updateSched = wp_next_scheduled( 'wp_update_themes' );
- $range_start = date( 'Hi', strtotime( '-30 minutes', $updateSched ) );
- $range_end = date( 'Hi', strtotime( '+30 minutes', $updateSched ) );
-
- if( $date_tod == $fileDay ) {
-
- if( $fileTime > $range_start && $fileTime < $range_end ) {
- $status = __( 'Automatic', 'companion-auto-update' );
- } else {
- $status = __( 'Manual', 'companion-auto-update' );
- }
-
- array_push( $method , $status );
+ $fileTime = date( 'Hi', filemtime( $fullPath ) );
+ $fileDate = date( 'ydm', filemtime( $fullPath ) );
+ $fileDateTime = strtotime( $fileDate );
+ $updateSched = wp_next_scheduled( 'wp_update_themes' );
+ if( $dateToday == $fileDate ) {
+ $method = ( $fileTime > date( 'Hi', strtotime( '-30 minutes', $updateSched ) ) && $fileTime < date( 'Hi', strtotime( '+30 minutes', $updateSched ) ) ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' );
} else {
-
- // Get info from database
- if( cau_check_if_exists( $key, 'slug', $updateLog ) ) {
- array_push( $method , cau_get_plugininfo( $key, 'method' ) );
- } else {
- array_push( $method , '-' );
- }
-
+ $method = cau_check_if_exists( $key, 'slug', $updateLog ) ? cau_get_plugininfo( $key, 'method' ) : '-';
}
- // Get last update date
- $fileDate = date( 'YmdHi', filemtime( $fullPath ) );
-
- if( $format == 'table' ) {
- $fileDateF = date_i18n( $dateFormat, filemtime( $fullPath ) );
- $fileDateF .= ' ‐ '.date ( 'H:i', filemtime( $fullPath ) );
- } else {
- $fileDateF = date_i18n( $dateFormat, filemtime( $fullPath ) );
- }
-
- array_push( $pluginDates, $fileDate );
- array_push( $pluginDatesF, $fileDateF );
- array_push( $type, 'Theme' );
- array_push( $plugslug , '' );
+ $log_items[$fileDateTime.'_'.$key] = array(
+ 'type' => 'Theme',
+ 'slug' => '',
+ 'name' => $theme_data->get( 'Name' ),
+ 'date' => $fileDateTime,
+ 'version' => $theme_data->get( 'Version' ),
+ 'method' => $method,
+ );
}
}
// TRANSLATIONS
- if( $translations ) {
+ if( $show_translations ) {
- // There is no way (at this time) to check if someone changed this link, so therefore it won't work when it's changed, sorry
- $transFolder = get_home_path().'wp-content/languages';
+ $transFolder = get_home_path() . 'wp-content/languages'; // There is no way (at this time) to check if someone changed this link, so therefore it won't work when it's changed, sorry
if( file_exists( $transFolder ) ) {
- $allThemTranslations = array();
- $allThemTypes = array();
-
- $pt = __( 'Plugin translations', 'companion-auto-update' );
- $tt = __( 'Theme translations', 'companion-auto-update' );
- $ct = __( 'Core translations', 'companion-auto-update' );
-
// Plugin translations
$files = glob( $transFolder.'/plugins/*.{mo}', GLOB_BRACE );
foreach( $files as $file ) {
- array_push( $allThemTranslations, $file );
- array_push( $allThemTypes, $pt );
+
+ $fileDateTime = strtotime( date( 'YmdHi', filemtime( $file ) ) );
+ $bn = basename( $file );
+
+ $log_items[$fileDateTime.'_'.$bn] = array(
+ 'type' => __( 'Plugin translations', 'companion-auto-update' ),
+ 'slug' => '',
+ 'name' => str_replace( ".json", "", str_replace( ".mo", "", str_replace( "-", " ", $bn ) ) ),
+ 'date' => $fileDateTime,
+ 'version' => '',
+ 'method' => '',
+ );
+
}
// Theme translations
$files = glob( $transFolder.'/themes/*.{mo}', GLOB_BRACE );
foreach( $files as $file ) {
- array_push( $allThemTranslations, $file );
- array_push( $allThemTypes, $tt );
+
+ $fileDateTime = strtotime( date( 'YmdHi', filemtime( $file ) ) );
+ $bn = basename( $file );
+
+ $log_items[$fileDateTime.'_'.$bn] = array(
+ 'type' => __( 'Theme translations', 'companion-auto-update' ),
+ 'slug' => '',
+ 'name' => str_replace( ".json", "", str_replace( ".mo", "", str_replace( "-", " ", $bn ) ) ),
+ 'date' => $fileDateTime,
+ 'version' => '',
+ 'method' => '',
+ );
+
}
// Core translations
$files = glob( $transFolder.'/*.{mo}', GLOB_BRACE );
foreach( $files as $file ) {
- array_push( $allThemTranslations, $file );
- array_push( $allThemTypes, $ct );
+
+ $fileDateTime = strtotime( date( 'YmdHi', filemtime( $file ) ) );
+ $bn = basename( $file );
+
+ $log_items[$fileDateTime.'_'.$bn] = array(
+ 'type' => __( 'Core translations', 'companion-auto-update' ),
+ 'slug' => '',
+ 'name' => str_replace( ".json", "", str_replace( ".mo", "", str_replace( "-", " ", $bn ) ) ),
+ 'date' => $fileDateTime,
+ 'version' => '',
+ 'method' => '',
+ );
+
}
- foreach( $allThemTranslations as $key => $trans_file ) {
-
- $transDate = date( 'YmdHi', filemtime( $trans_file ) );
-
- if( $format == 'table' ) {
- $transDateF = date_i18n( $dateFormat, filemtime( $trans_file ) );
- $transDateF .= ' ‐ '.date ( 'H:i', filemtime( $trans_file ) );
- } else {
- $transDateF = date_i18n( $dateFormat, filemtime( $trans_file ) );
- }
-
- $trans_name = basename( $trans_file );
- $trans_name = str_replace( "-", " ", $trans_name );
- $trans_name = str_replace( ".mo", "", $trans_name );
- $trans_name = str_replace( ".json", "", $trans_name );
- $trans_lang = substr( $trans_name, strrpos( $trans_name, " " ) + 1 );
- $trans_name = str_replace( $trans_lang, "", $trans_name );
- $trans_lang = substr( $trans_lang, strrpos( $trans_lang, "_" ) + 1 );
-
- // Push
- array_push( $pluginNames, ucfirst( $trans_name ).': '.$trans_lang );
- array_push( $type, $allThemTypes[$key] );
- array_push( $pluginVersion, '-' );
- array_push( $pluginDates, $transDate );
- array_push( $pluginDatesF, $transDateF );
- array_push( $plugslug , '' );
- array_push( $method , '-' );
-
- }
-
- } else {
-
- $transDate = date('YmdHi');
- $transDateF = 'Could not read translations date.';
-
- array_push( $pluginNames, 'Translations' );
- array_push( $type, $trans_type.' translations' );
- array_push( $pluginVersion, '-' );
- array_push( $pluginDates, $transDate );
- array_push( $pluginDatesF, $transDateF );
- array_push( $plugslug , '' );
-
- // Get info from database
- array_push( $method , '-' );
-
}
}
// CORE
- if( $core ) {
-
- $coreFile = ABSPATH.'wp-includes/version.php';
- $updateSched = wp_next_scheduled( 'wp_version_check' );
+ if( $show_core ) {
+ $coreFile = ABSPATH . 'wp-includes/version.php';
if( file_exists( $coreFile ) ) {
- $coreDate = date( 'YmdHi', filemtime( $coreFile ) );
+ $fileTime = date( 'Hi', filemtime( $coreFile ) );
+ $fileDate = date( 'ydm', filemtime( $coreFile ) );
+ $fileDateTime = strtotime( $fileDate );
+ $updateSched = wp_next_scheduled( 'wp_version_check' );
- if( $format == 'table' ) {
- $coreDateF = date_i18n( $dateFormat, filemtime( $coreFile ) );
- $coreDateF .= ' ‐ '.date ( 'H:i', filemtime( $coreFile ) );
+ if( $dateToday == $fileDate ) {
+ $method = ( $fileTime > date( 'Hi', strtotime( '-30 minutes', $updateSched ) ) && $fileTime < date( 'Hi', strtotime( '+30 minutes', $updateSched ) ) ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' );
} else {
- $coreDateF = date_i18n( $dateFormat, filemtime( $coreFile ) );
- }
-
- // Automatic or Manual (non-db-version)
- $date_tod = date ( 'ydm' );
- $fileDay = date ( 'ydm', filemtime( $coreFile ) );
- $fileTime = date ( 'Hi', filemtime( $coreFile ) );
- $update_time = wp_next_scheduled( 'wp_version_check' );
- $range_start = date( 'Hi', strtotime( '-30 minutes', $update_time ) );
- $range_end = date( 'Hi', strtotime( '+30 minutes', $update_time ) );
-
- if( $date_tod == $fileDay ) {
-
- if( $fileTime > $range_start && $fileTime < $range_end ) {
- $methodVal = __( 'Automatic', 'companion-auto-update' );
- } else {
- $methodVal = __( 'Manual', 'companion-auto-update' );
- }
-
- } else {
-
- // Get info from database
- if( cau_check_if_exists( $key, 'slug', $updateLog ) ) {
- $methodVal = cau_get_plugininfo( 'core', 'method' );
- } else {
- $methodVal = '';
- }
-
+ $method = cau_check_if_exists( 'core', 'slug', $updateLog ) ? cau_get_plugininfo( 'core', 'method' ) : '-';
}
} else {
- $coreDate = date('YmdHi');
- $coreDateF = 'Could not read core date.';
+ $fileDateTime = 'Could not read core date.';
+ $method = '-';
}
- array_push( $pluginNames, 'WordPress' );
- array_push( $type, 'WordPress' );
- array_push( $pluginVersion, get_bloginfo( 'version' ) );
- array_push( $pluginDates, $coreDate );
- array_push( $pluginDatesF, $coreDateF );
- array_push( $plugslug , '' );
+ $log_items[$fileDateTime.'_'.$key] = array(
+ 'type' => 'WordPress',
+ 'slug' => '',
+ 'name' => 'WordPress',
+ 'date' => $fileDateTime,
+ 'version' => get_bloginfo( 'version' ),
+ 'method' => $method,
+ );
- // Get info from database
- array_push( $method , $methodVal );
-
- }
-
- // Sort array by date
- arsort( $pluginDates );
-
- if( $limit == 'all' ) {
- $limit = 999;
}
$listClasses = 'wp-list-table widefat autoupdate autoupdatelog';
@@ -906,51 +594,35 @@ function cau_fetch_log( $limit, $format = 'simple' ) {
echo '';
- $loopings = 0;
+ krsort( $log_items );
+ $limited_log_items = $limit ? array_slice( $log_items, 0, $limit ) : $log_items;
- foreach ( $pluginDates as $key => $value ) {
+ foreach ( $limited_log_items as $key => $value ) {
- if( $loopings < $limit ) {
+ echo '';
- echo ' ';
+ $log_item__name = $value['name'];
+ $log_item__name_f = ( $format != 'table' && strlen( $log_item__name ) > 25 ) ? substr( $log_item__name, 0, 25 ).'...' : $log_item__name;
+ $log_item__type = $value['type'];
+ $log_item__slug = $value['slug'];
+ $log_item__version = $value['version'];
+ $log_item__date = date_i18n( get_option( 'date_format' ), $value['date'] );
+ $log_item__method = $value['method'];
- if( $format == 'table' ) {
- $pluginName = $pluginNames[$key];
- } else {
- $pluginName = substr( $pluginNames[$key], 0, 25);
- if( strlen( $pluginNames[$key] ) > 25 ) {
- $pluginName .= '...';
- }
- }
+ echo ''.cau_getChangelogUrl( $log_item__type, $log_item__name_f, $log_item__slug ).'
';
- echo ''.cau_getChangelogUrl( $type[$key], $pluginNames[$key], $plugslug[$key] ).'
';
+ if( $format == 'table' ) {
+ if( !$translations ) echo ''.$log_item__version.'
';
+ echo ''.$log_item__type.'
';
+ }
+ echo ''.$log_item__date.'
';
- if( $format == 'table' ) {
- if( $type[$key] == 'Plugin' ) {
- $thisType = __( 'Plugin', 'companion-auto-update' );
- } else if( $type[$key] == 'Theme' ) {
- $thisType = __( 'Theme', 'companion-auto-update' );
- } else {
- $thisType = $type[$key];
- }
+ if( $format == 'table' ) {
+ echo ''.$log_item__method.'
';
+ }
- if( !$translations ) echo ''. $pluginVersion[$key] .'
';
- echo ''. $thisType .'
';
-
- }
-
- echo ''. $pluginDatesF[$key] .'
';
-
- if( $format == 'table' ) {
- echo ''. $method[$key] .'
';
- }
-
- echo ' ';
-
- $loopings++;
-
- }
+ echo '';
}
@@ -973,38 +645,16 @@ function cau_getChangelogUrl( $type, $name, $plugslug ) {
break;
}
- if( !empty( $url ) ) {
- return ''.$name.' ';
- } else {
- return $name;
- }
+ return !empty( $url ) ? "{$name} " : $name;
}
// Only update plugins which are enabled
function cau_dontUpdatePlugins( $update, $item ) {
-
- $plugins = plugins_donotupdatelist();
-
- if ( in_array( $item->slug, $plugins ) ) {
- return false; // Don't update these plugins
- } else {
- return true; // Always update these plugins
- }
-
-
+ return in_array( $item->slug, plugins_donotupdatelist() ) ? false : true;
}
function cau_dontUpdateThemes( $update, $item ) {
-
- $themes = themes_donotupdatelist();
-
- if ( in_array( $item->slug, $themes ) ) {
- return false; // Don't update these themes
- } else {
- return true; // Always update these themes
- }
-
-
+ return in_array( $item->slug, themes_donotupdatelist() ) ? false : true;
}
// Get plugin information of repository
@@ -1233,11 +883,7 @@ function cau_updateLogDBisEmpty() {
$updateLog = $wpdb->prefix.$updateDB;
$row_count = $wpdb->get_var( "SELECT COUNT(*) FROM $updateLog" );
- if( $row_count > 0 ) {
- return false;
- } else {
- return true;
- }
+ return ( $row_count > 0 ) ? false : true;
}
// Plugin information to DB
diff --git a/wp-content/upgrade-temp-backup/plugins/companion-auto-update/companion-auto-update.php b/wp-content/upgrade-temp-backup/plugins/companion-auto-update/companion-auto-update.php
index f617f83c..a870a0fd 100644
--- a/wp-content/upgrade-temp-backup/plugins/companion-auto-update/companion-auto-update.php
+++ b/wp-content/upgrade-temp-backup/plugins/companion-auto-update/companion-auto-update.php
@@ -4,7 +4,7 @@
* Plugin Name: Companion Auto Update
* Plugin URI: http://codeermeneer.nl/portfolio/companion-auto-update/
* Description: This plugin auto updates all plugins, all themes and the wordpress core.
- * Version: 3.8.7.1
+ * Version: 3.8.8
* Author: Papin Schipper
* Author URI: http://codeermeneer.nl/
* Contributors: papin
diff --git a/wp-content/upgrade-temp-backup/plugins/companion-auto-update/readme.txt b/wp-content/upgrade-temp-backup/plugins/companion-auto-update/readme.txt
index 2ce44d00..03dc0813 100644
--- a/wp-content/upgrade-temp-backup/plugins/companion-auto-update/readme.txt
+++ b/wp-content/upgrade-temp-backup/plugins/companion-auto-update/readme.txt
@@ -2,10 +2,10 @@
Contributors: Papin, qweb
Donate link: https://www.paypal.me/dakel/10/
Tags: auto, automatic, background, update, updates, updating, automatic updates, automatic background updates, easy update, wordpress update, theme update, plugin update, up-to-date, security, update latest version, update core, update wp, update wp core, major updates, minor updates, update to new version, update core, update plugin, update plugins, update plugins automatically, update theme, plugin, theme, advance, control, mail, notifations, enable
-Requires at least: 3.6.0
-Tested up to: 6.0
+Requires at least: 5.3.0
+Tested up to: 6.4
Requires PHP: 5.1
-Stable tag: 3.8.7.1
+Stable tag: 3.8.8
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -82,6 +82,11 @@ So obviously, some of you wondered what the difference would be between the defa
== Changelog ==
+= 3.8.8 (December 19, 2023) =
+* Fixed a few minor bugs
+* Made some performance improvements
+* We now require at least WordPress 5.3
+
= 3.8.7.1 (September 28, 2022) =
* Tweak: Extended function_exists check with get_plugins() for the fatal error when trying to send update emails
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/css.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/css.php
new file mode 100644
index 00000000..e46eec65
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/css.php
@@ -0,0 +1,134 @@
+_selector ) {
+ $this->add_selector_rules_to_output();
+ }
+
+ $this->_selector = $selector;
+
+ return $this;
+ }
+
+ /**
+ * Adds a css property with value to the css output
+ *
+ * @access public
+ * @since 1.0
+ *
+ * @param string $property - the css property.
+ * @param string $value - the value to be placed with the property.
+ * @param string $url Whether we need to generate URL in the string.
+ * @return $this
+ */
+ public function add_property( $property, $value, $url = '' ) {
+ // If we don't have a value or our value is the same as our og default, bail.
+ if ( empty( $value ) ) {
+ return false;
+ }
+
+ // Set up our background image URL param if needed.
+ $url_start = ( '' !== $url ) ? "url('" : ""; // phpcs:ignore -- need double quotes.
+ $url_end = ( '' !== $url ) ? "')" : ""; // phpcs:ignore -- need double quotes.
+
+ $this->_css .= $property . ':' . $url_start . $value . $url_end . ';';
+ return $this;
+ }
+
+ /**
+ * Adds the current selector rules to the output variable
+ *
+ * @access private
+ * @since 1.0
+ *
+ * @return $this
+ */
+ private function add_selector_rules_to_output() {
+ if ( ! empty( $this->_css ) ) {
+ $this->_selector_output = $this->_selector;
+ $selector_output = sprintf( '%1$s{%2$s}', $this->_selector_output, $this->_css );
+
+ $this->_output .= $selector_output;
+
+ // Reset the css.
+ $this->_css = '';
+ }
+
+ return $this;
+ }
+
+ /**
+ * Returns the minified css in the $_output variable
+ *
+ * @access public
+ * @since 1.0
+ *
+ * @return string
+ */
+ public function css_output() {
+ // Add current selector's rules to output.
+ $this->add_selector_rules_to_output();
+
+ // Output minified css.
+ return $this->_output;
+ }
+
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/functions.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/functions.php
new file mode 100644
index 00000000..fb21ce01
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/functions.php
@@ -0,0 +1,1342 @@
+ '',
+ 'body_repeat' => '',
+ 'body_size' => '',
+ 'body_attachment' => '',
+ 'body_position' => '',
+ 'top_bar_image' => '',
+ 'top_bar_repeat' => '',
+ 'top_bar_size' => '',
+ 'top_bar_attachment' => '',
+ 'top_bar_position' => '',
+ 'header_image' => '',
+ 'header_repeat' => '',
+ 'header_size' => '',
+ 'header_attachment' => '',
+ 'header_position' => '',
+ 'nav_image' => '',
+ 'nav_repeat' => '',
+ 'nav_item_image' => '',
+ 'nav_item_repeat' => '',
+ 'nav_item_hover_image' => '',
+ 'nav_item_hover_repeat' => '',
+ 'nav_item_current_image' => '',
+ 'nav_item_current_repeat' => '',
+ 'sub_nav_image' => '',
+ 'sub_nav_repeat' => '',
+ 'sub_nav_item_image' => '',
+ 'sub_nav_item_repeat' => '',
+ 'sub_nav_item_hover_image' => '',
+ 'sub_nav_item_hover_repeat' => '',
+ 'sub_nav_item_current_image' => '',
+ 'sub_nav_item_current_repeat' => '',
+ 'content_image' => '',
+ 'content_repeat' => '',
+ 'content_size' => '',
+ 'content_attachment' => '',
+ 'content_position' => '',
+ 'sidebar_widget_image' => '',
+ 'sidebar_widget_repeat' => '',
+ 'sidebar_widget_size' => '',
+ 'sidebar_widget_attachment' => '',
+ 'sidebar_widget_position' => '',
+ 'footer_widget_image' => '',
+ 'footer_widget_repeat' => '',
+ 'footer_widget_size' => '',
+ 'footer_widget_attachment' => '',
+ 'footer_widget_position' => '',
+ 'footer_image' => '',
+ 'footer_repeat' => '',
+ 'footer_size' => '',
+ 'footer_attachment' => '',
+ 'footer_position' => '',
+ );
+
+ return apply_filters( 'generate_background_option_defaults', $generate_background_defaults );
+ }
+}
+
+if ( ! function_exists( 'generate_backgrounds_customize' ) ) {
+ add_action( 'customize_register', 'generate_backgrounds_customize', 999 );
+ /**
+ * Build our Customizer options
+ *
+ * @since 0.1
+ *
+ * @param object $wp_customize The Customizer object.
+ */
+ function generate_backgrounds_customize( $wp_customize ) {
+ $defaults = generate_get_background_defaults();
+
+ require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php';
+
+ if ( method_exists( $wp_customize, 'register_control_type' ) ) {
+ $wp_customize->register_control_type( 'GeneratePress_Background_Images_Customize_Control' );
+ $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' );
+ }
+
+ if ( class_exists( 'WP_Customize_Panel' ) ) {
+ if ( ! $wp_customize->get_panel( 'generate_backgrounds_panel' ) ) {
+ $wp_customize->add_panel(
+ 'generate_backgrounds_panel',
+ array(
+ 'capability' => 'edit_theme_options',
+ 'theme_supports' => '',
+ 'title' => __( 'Background Images', 'gp-premium' ),
+ 'priority' => 55,
+ )
+ );
+ }
+ }
+
+ $wp_customize->add_section(
+ 'backgrounds_section',
+ array(
+ 'title' => __( 'Background Images', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'priority' => 50,
+ )
+ );
+
+ $wp_customize->add_section(
+ 'generate_backgrounds_body',
+ array(
+ 'title' => __( 'Body', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'priority' => 5,
+ 'panel' => 'generate_backgrounds_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_body_background_image_shortcuts',
+ array(
+ 'section' => 'generate_backgrounds_body',
+ 'element' => __( 'Body', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'generate_layout_container',
+ 'colors' => 'body_section',
+ 'typography' => 'font_section',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ /**
+ * Body background
+ */
+ $wp_customize->add_setting(
+ 'generate_background_settings[body_image]',
+ array(
+ 'default' => $defaults['body_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_backgrounds-body-image',
+ array(
+ 'section' => 'generate_backgrounds_body',
+ 'settings' => 'generate_background_settings[body_image]',
+ 'label' => __( 'Body', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[body_repeat]',
+ array(
+ 'default' => $defaults['body_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[body_size]',
+ array(
+ 'default' => $defaults['body_size'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[body_attachment]',
+ array(
+ 'default' => $defaults['body_attachment'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[body_position]',
+ array(
+ 'default' => $defaults['body_position'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_html',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Background_Images_Customize_Control(
+ $wp_customize,
+ 'body_backgrounds_control',
+ array(
+ 'section' => 'generate_backgrounds_body',
+ 'settings' => array(
+ 'repeat' => 'generate_background_settings[body_repeat]',
+ 'size' => 'generate_background_settings[body_size]',
+ 'attachment' => 'generate_background_settings[body_attachment]',
+ 'position' => 'generate_background_settings[body_position]',
+ ),
+ )
+ )
+ );
+
+ /**
+ * Top bar background
+ */
+ $wp_customize->add_section(
+ 'generate_backgrounds_top_bar',
+ array(
+ 'title' => __( 'Top Bar', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'priority' => 5,
+ 'panel' => 'generate_backgrounds_panel',
+ 'active_callback' => 'generate_premium_is_top_bar_active',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[top_bar_image]',
+ array(
+ 'default' => $defaults['top_bar_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_background_settings[top_bar_image]',
+ array(
+ 'section' => 'generate_backgrounds_top_bar',
+ 'settings' => 'generate_background_settings[top_bar_image]',
+ 'label' => __( 'Top Bar', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[top_bar_repeat]',
+ array(
+ 'default' => $defaults['top_bar_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[top_bar_size]',
+ array(
+ 'default' => $defaults['top_bar_size'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[top_bar_attachment]',
+ array(
+ 'default' => $defaults['top_bar_attachment'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[top_bar_position]',
+ array(
+ 'default' => $defaults['top_bar_position'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_html',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Background_Images_Customize_Control(
+ $wp_customize,
+ 'top_bar_backgrounds_control',
+ array(
+ 'section' => 'generate_backgrounds_top_bar',
+ 'settings' => array(
+ 'repeat' => 'generate_background_settings[top_bar_repeat]',
+ 'size' => 'generate_background_settings[top_bar_size]',
+ 'attachment' => 'generate_background_settings[top_bar_attachment]',
+ 'position' => 'generate_background_settings[top_bar_position]',
+ ),
+ )
+ )
+ );
+
+ /**
+ * Header background
+ */
+ $wp_customize->add_section(
+ 'generate_backgrounds_header',
+ array(
+ 'title' => __( 'Header', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'priority' => 10,
+ 'panel' => 'generate_backgrounds_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_header_background_image_shortcuts',
+ array(
+ 'section' => 'generate_backgrounds_header',
+ 'element' => __( 'Header', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'generate_layout_header',
+ 'colors' => 'header_color_section',
+ 'typography' => 'font_header_section',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[header_image]',
+ array(
+ 'default' => $defaults['header_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_backgrounds-header-image',
+ array(
+ 'section' => 'generate_backgrounds_header',
+ 'settings' => 'generate_background_settings[header_image]',
+ 'label' => __( 'Header', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[header_repeat]',
+ array(
+ 'default' => $defaults['header_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[header_size]',
+ array(
+ 'default' => $defaults['header_size'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[header_attachment]',
+ array(
+ 'default' => $defaults['header_attachment'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[header_position]',
+ array(
+ 'default' => $defaults['header_position'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_html',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Background_Images_Customize_Control(
+ $wp_customize,
+ 'header_backgrounds_control',
+ array(
+ 'section' => 'generate_backgrounds_header',
+ 'settings' => array(
+ 'repeat' => 'generate_background_settings[header_repeat]',
+ 'size' => 'generate_background_settings[header_size]',
+ 'attachment' => 'generate_background_settings[header_attachment]',
+ 'position' => 'generate_background_settings[header_position]',
+ ),
+ )
+ )
+ );
+
+ $wp_customize->add_section(
+ 'generate_backgrounds_navigation',
+ array(
+ 'title' => __( 'Primary Navigation', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'priority' => 15,
+ 'panel' => 'generate_backgrounds_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_primary_navigation_background_image_shortcuts',
+ array(
+ 'section' => 'generate_backgrounds_navigation',
+ 'element' => __( 'Primary Navigation', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'generate_layout_navigation',
+ 'colors' => 'navigation_color_section',
+ 'typography' => 'font_navigation_section',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ /**
+ * Navigation background
+ */
+ $wp_customize->add_setting(
+ 'generate_background_settings[nav_image]',
+ array(
+ 'default' => $defaults['nav_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_background_settings[nav_image]',
+ array(
+ 'section' => 'generate_backgrounds_navigation',
+ 'settings' => 'generate_background_settings[nav_image]',
+ 'priority' => 750,
+ 'label' => __( 'Navigation', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[nav_repeat]',
+ array(
+ 'default' => $defaults['nav_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_background_settings[nav_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'generate_backgrounds_navigation',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_background_settings[nav_repeat]',
+ 'priority' => 800,
+ )
+ );
+
+ /**
+ * Navigation item background
+ */
+ $wp_customize->add_setting(
+ 'generate_background_settings[nav_item_image]',
+ array(
+ 'default' => $defaults['nav_item_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_backgrounds-nav-item-image',
+ array(
+ 'section' => 'generate_backgrounds_navigation',
+ 'settings' => 'generate_background_settings[nav_item_image]',
+ 'priority' => 950,
+ 'label' => __( 'Navigation Item', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[nav_item_repeat]',
+ array(
+ 'default' => $defaults['nav_item_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_background_settings[nav_item_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'generate_backgrounds_navigation',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_background_settings[nav_item_repeat]',
+ 'priority' => 1000,
+ )
+ );
+
+ /**
+ * Navigation item hover background
+ */
+ $wp_customize->add_setting(
+ 'generate_background_settings[nav_item_hover_image]',
+ array(
+ 'default' => $defaults['nav_item_hover_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_backgrounds-nav-item-hover-image',
+ array(
+ 'section' => 'generate_backgrounds_navigation',
+ 'settings' => 'generate_background_settings[nav_item_hover_image]',
+ 'priority' => 1150,
+ 'label' => __( 'Navigation Item Hover', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[nav_item_hover_repeat]',
+ array(
+ 'default' => $defaults['nav_item_hover_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_background_settings[nav_item_hover_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'generate_backgrounds_navigation',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_background_settings[nav_item_hover_repeat]',
+ 'priority' => 1200,
+ )
+ );
+
+ /**
+ * Navigation item current background
+ */
+ $wp_customize->add_setting(
+ 'generate_background_settings[nav_item_current_image]',
+ array(
+ 'default' => $defaults['nav_item_current_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_backgrounds-nav-item-current-image',
+ array(
+ 'section' => 'generate_backgrounds_navigation',
+ 'settings' => 'generate_background_settings[nav_item_current_image]',
+ 'priority' => 1350,
+ 'label' => __( 'Navigation Item Current', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[nav_item_current_repeat]',
+ array(
+ 'default' => $defaults['nav_item_current_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_background_settings[nav_item_current_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'generate_backgrounds_navigation',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_background_settings[nav_item_current_repeat]',
+ 'priority' => 1400,
+ )
+ );
+
+ $wp_customize->add_section(
+ 'generate_backgrounds_subnavigation',
+ array(
+ 'title' => __( 'Primary Sub-Navigation', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'priority' => 20,
+ 'panel' => 'generate_backgrounds_panel',
+ )
+ );
+
+ /**
+ * Sub-Navigation item background
+ */
+ $wp_customize->add_setting(
+ 'generate_background_settings[sub_nav_item_image]',
+ array(
+ 'default' => $defaults['sub_nav_item_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_background_settings[sub_nav_item_image]',
+ array(
+ 'section' => 'generate_backgrounds_subnavigation',
+ 'settings' => 'generate_background_settings[sub_nav_item_image]',
+ 'priority' => 1700,
+ 'label' => __( 'Sub-Navigation Item', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[sub_nav_item_repeat]',
+ array(
+ 'default' => $defaults['sub_nav_item_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_background_settings[sub_nav_item_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'generate_backgrounds_subnavigation',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_background_settings[sub_nav_item_repeat]',
+ 'priority' => 1800,
+ )
+ );
+
+ /**
+ * Sub-Navigation item hover background
+ */
+ $wp_customize->add_setting(
+ 'generate_background_settings[sub_nav_item_hover_image]',
+ array(
+ 'default' => $defaults['sub_nav_item_hover_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_background_settings[sub_nav_item_hover_image]',
+ array(
+ 'section' => 'generate_backgrounds_subnavigation',
+ 'settings' => 'generate_background_settings[sub_nav_item_hover_image]',
+ 'priority' => 2000,
+ 'label' => __( 'Sub-Navigation Item Hover', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[sub_nav_item_hover_repeat]',
+ array(
+ 'default' => $defaults['sub_nav_item_hover_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_background_settings[sub_nav_item_hover_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'generate_backgrounds_subnavigation',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_background_settings[sub_nav_item_hover_repeat]',
+ 'priority' => 2100,
+ )
+ );
+
+ /**
+ * Sub-Navigation item current background
+ */
+ $wp_customize->add_setting(
+ 'generate_background_settings[sub_nav_item_current_image]',
+ array(
+ 'default' => $defaults['sub_nav_item_current_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_background_settings[sub_nav_item_current_image]',
+ array(
+ 'section' => 'generate_backgrounds_subnavigation',
+ 'settings' => 'generate_background_settings[sub_nav_item_current_image]',
+ 'priority' => 2300,
+ 'label' => __( 'Sub-Navigation Item Current', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[sub_nav_item_current_repeat]',
+ array(
+ 'default' => $defaults['sub_nav_item_current_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_background_settings[sub_nav_item_current_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'generate_backgrounds_subnavigation',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_background_settings[sub_nav_item_current_repeat]',
+ 'priority' => 2400,
+ )
+ );
+
+ $wp_customize->add_section(
+ 'generate_backgrounds_content',
+ array(
+ 'title' => __( 'Content', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'priority' => 25,
+ 'panel' => 'generate_backgrounds_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_content_background_image_shortcuts',
+ array(
+ 'section' => 'generate_backgrounds_content',
+ 'element' => __( 'Content', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'colors' => 'content_color_section',
+ 'typography' => 'font_section',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ /**
+ * Content background
+ */
+ $wp_customize->add_setting(
+ 'generate_background_settings[content_image]',
+ array(
+ 'default' => $defaults['content_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_background_settings[content_image]',
+ array(
+ 'section' => 'generate_backgrounds_content',
+ 'settings' => 'generate_background_settings[content_image]',
+ 'label' => __( 'Content', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[content_repeat]',
+ array(
+ 'default' => $defaults['content_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[content_size]',
+ array(
+ 'default' => $defaults['content_size'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[content_attachment]',
+ array(
+ 'default' => $defaults['content_attachment'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[content_position]',
+ array(
+ 'default' => $defaults['content_position'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_html',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Background_Images_Customize_Control(
+ $wp_customize,
+ 'content_backgrounds_control',
+ array(
+ 'section' => 'generate_backgrounds_content',
+ 'settings' => array(
+ 'repeat' => 'generate_background_settings[content_repeat]',
+ 'size' => 'generate_background_settings[content_size]',
+ 'attachment' => 'generate_background_settings[content_attachment]',
+ 'position' => 'generate_background_settings[content_position]',
+ ),
+ )
+ )
+ );
+
+ $wp_customize->add_section(
+ 'generate_backgrounds_sidebars',
+ array(
+ 'title' => __( 'Sidebar', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'priority' => 25,
+ 'panel' => 'generate_backgrounds_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_sidebar_background_image_shortcuts',
+ array(
+ 'section' => 'generate_backgrounds_sidebars',
+ 'element' => __( 'Sidebar', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'generate_layout_sidebars',
+ 'colors' => 'sidebar_widget_color_section',
+ 'typography' => 'font_widget_section',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[sidebar_widget_image]',
+ array(
+ 'default' => $defaults['sidebar_widget_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_background_settings[sidebar_widget_image]',
+ array(
+ 'section' => 'generate_backgrounds_sidebars',
+ 'settings' => 'generate_background_settings[sidebar_widget_image]',
+ 'label' => __( 'Sidebar Widgets', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[sidebar_widget_repeat]',
+ array(
+ 'default' => $defaults['sidebar_widget_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[sidebar_widget_size]',
+ array(
+ 'default' => $defaults['sidebar_widget_size'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[sidebar_widget_attachment]',
+ array(
+ 'default' => $defaults['sidebar_widget_attachment'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[sidebar_widget_position]',
+ array(
+ 'default' => $defaults['sidebar_widget_position'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_html',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Background_Images_Customize_Control(
+ $wp_customize,
+ 'sidebar_backgrounds_control',
+ array(
+ 'section' => 'generate_backgrounds_sidebars',
+ 'settings' => array(
+ 'repeat' => 'generate_background_settings[sidebar_widget_repeat]',
+ 'size' => 'generate_background_settings[sidebar_widget_size]',
+ 'attachment' => 'generate_background_settings[sidebar_widget_attachment]',
+ 'position' => 'generate_background_settings[sidebar_widget_position]',
+ ),
+ )
+ )
+ );
+
+ $wp_customize->add_section(
+ 'generate_backgrounds_footer',
+ array(
+ 'title' => __( 'Footer', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'priority' => 30,
+ 'panel' => 'generate_backgrounds_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_footer_background_image_shortcuts',
+ array(
+ 'section' => 'generate_backgrounds_footer',
+ 'element' => __( 'Footer', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'generate_layout_footer',
+ 'colors' => 'footer_color_section',
+ 'typography' => 'font_footer_section',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[footer_widget_image]',
+ array(
+ 'default' => $defaults['footer_widget_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_background_settings[footer_widget_image]',
+ array(
+ 'section' => 'generate_backgrounds_footer',
+ 'settings' => 'generate_background_settings[footer_widget_image]',
+ 'label' => __( 'Footer Widget Area', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[footer_widget_repeat]',
+ array(
+ 'default' => $defaults['footer_widget_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[footer_widget_size]',
+ array(
+ 'default' => $defaults['footer_widget_size'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[footer_widget_attachment]',
+ array(
+ 'default' => $defaults['footer_widget_attachment'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[footer_widget_position]',
+ array(
+ 'default' => $defaults['footer_widget_position'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_html',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Background_Images_Customize_Control(
+ $wp_customize,
+ 'footer_widgets_backgrounds_control',
+ array(
+ 'section' => 'generate_backgrounds_footer',
+ 'settings' => array(
+ 'repeat' => 'generate_background_settings[footer_widget_repeat]',
+ 'size' => 'generate_background_settings[footer_widget_size]',
+ 'attachment' => 'generate_background_settings[footer_widget_attachment]',
+ 'position' => 'generate_background_settings[footer_widget_position]',
+ ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[footer_image]',
+ array(
+ 'default' => $defaults['footer_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_backgrounds-footer-image',
+ array(
+ 'section' => 'generate_backgrounds_footer',
+ 'settings' => 'generate_background_settings[footer_image]',
+ 'label' => __( 'Footer Area', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[footer_repeat]',
+ array(
+ 'default' => $defaults['footer_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[footer_size]',
+ array(
+ 'default' => $defaults['footer_size'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[footer_attachment]',
+ array(
+ 'default' => $defaults['footer_attachment'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'sanitize_key',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_background_settings[footer_position]',
+ array(
+ 'default' => $defaults['footer_position'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_html',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Background_Images_Customize_Control(
+ $wp_customize,
+ 'footer_backgrounds_control',
+ array(
+ 'section' => 'generate_backgrounds_footer',
+ 'settings' => array(
+ 'repeat' => 'generate_background_settings[footer_repeat]',
+ 'size' => 'generate_background_settings[footer_size]',
+ 'attachment' => 'generate_background_settings[footer_attachment]',
+ 'position' => 'generate_background_settings[footer_position]',
+ ),
+ )
+ )
+ );
+ }
+}
+
+if ( ! function_exists( 'generate_backgrounds_css' ) ) {
+ /**
+ * Generate the CSS in the section using the Theme Customizer
+ *
+ * @since 0.1
+ */
+ function generate_backgrounds_css() {
+ $generate_settings = wp_parse_args(
+ get_option( 'generate_background_settings', array() ),
+ generate_get_background_defaults()
+ );
+
+ // Fix size values.
+ // Spaces and % are stripped by sanitize_key.
+ $generate_settings['body_size'] = ( '100' == $generate_settings['body_size'] ) ? '100% auto' : esc_attr( $generate_settings['body_size'] ); // phpcs:ignore -- Non-strict comparison ok.
+ $generate_settings['top_bar_size'] = ( '100' == $generate_settings['top_bar_size'] ) ? '100% auto' : esc_attr( $generate_settings['top_bar_size'] ); // phpcs:ignore -- Non-strict comparison ok.
+ $generate_settings['header_size'] = ( '100' == $generate_settings['header_size'] ) ? '100% auto' : esc_attr( $generate_settings['header_size'] ); // phpcs:ignore -- Non-strict comparison ok.
+ $generate_settings['content_size'] = ( '100' == $generate_settings['content_size'] ) ? '100% auto' : esc_attr( $generate_settings['content_size'] ); // phpcs:ignore -- Non-strict comparison ok.
+ $generate_settings['sidebar_widget_size'] = ( '100' == $generate_settings['sidebar_widget_size'] ) ? '100% auto' : esc_attr( $generate_settings['sidebar_widget_size'] ); // phpcs:ignore -- Non-strict comparison ok.
+ $generate_settings['footer_widget_size'] = ( '100' == $generate_settings['footer_widget_size'] ) ? '100% auto' : esc_attr( $generate_settings['footer_widget_size'] ); // phpcs:ignore -- Non-strict comparison ok.
+ $generate_settings['footer_size'] = ( '100' == $generate_settings['footer_size'] ) ? '100% auto' : esc_attr( $generate_settings['footer_size'] ); // phpcs:ignore -- Non-strict comparison ok.
+
+ $css = new GeneratePress_Backgrounds_CSS();
+
+ $css->set_selector( 'body' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['body_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['body_repeat'] ) );
+ $css->add_property( 'background-size', esc_attr( $generate_settings['body_size'] ) );
+ $css->add_property( 'background-attachment', esc_attr( $generate_settings['body_attachment'] ) );
+ $css->add_property( 'background-position', esc_attr( $generate_settings['body_position'] ) );
+
+ if ( is_active_sidebar( 'top-bar' ) ) {
+ $css->set_selector( '.top-bar' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['top_bar_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['top_bar_repeat'] ) );
+ $css->add_property( 'background-size', esc_attr( $generate_settings['top_bar_size'] ) );
+ $css->add_property( 'background-attachment', esc_attr( $generate_settings['top_bar_attachment'] ) );
+ $css->add_property( 'background-position', esc_attr( $generate_settings['top_bar_position'] ) );
+ }
+
+ $css->set_selector( '.site-header' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['header_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['header_repeat'] ) );
+ $css->add_property( 'background-size', esc_attr( $generate_settings['header_size'] ) );
+ $css->add_property( 'background-attachment', esc_attr( $generate_settings['header_attachment'] ) );
+ $css->add_property( 'background-position', esc_attr( $generate_settings['header_position'] ) );
+
+ $css->set_selector( '.main-navigation, .main-navigation .menu-toggle' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['nav_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_repeat'] ) );
+
+ $css->set_selector( '.main-navigation .main-nav > ul > li > a' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['nav_item_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_item_repeat'] ) );
+
+ $css->set_selector( '.main-navigation .main-nav > ul > li > a:hover,.main-navigation .main-nav > ul > li.sfHover > a' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['nav_item_hover_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_item_hover_repeat'] ) );
+
+ $css->set_selector( '.main-navigation .main-nav > ul > li[class*="current-menu-"] > a,.main-navigation .main-nav > ul > li[class*="current-menu-"] > a:hover,.main-navigation .main-nav > ul > li[class*="current-menu-"].sfHover > a' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['nav_item_current_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_item_current_repeat'] ) );
+
+ $css->set_selector( '.main-navigation ul ul li a' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['sub_nav_item_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['sub_nav_item_repeat'] ) );
+
+ $css->set_selector( '.main-navigation ul ul li > a:hover,.main-navigation ul ul li.sfHover > a' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['sub_nav_item_hover_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['sub_nav_item_hover_repeat'] ) );
+
+ $css->set_selector( '.main-navigation ul ul li[class*="current-menu-"] > a,.main-navigation ul ul li[class*="current-menu-"] > a:hover,.main-navigation ul ul li[class*="current-menu-"].sfHover > a' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['sub_nav_item_current_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['sub_nav_item_current_repeat'] ) );
+
+ $css->set_selector( '.separate-containers .inside-article,.separate-containers .comments-area,.separate-containers .page-header,.one-container .container,.separate-containers .paging-navigation,.separate-containers .inside-page-header' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['content_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['content_repeat'] ) );
+ $css->add_property( 'background-size', esc_attr( $generate_settings['content_size'] ) );
+ $css->add_property( 'background-attachment', esc_attr( $generate_settings['content_attachment'] ) );
+ $css->add_property( 'background-position', esc_attr( $generate_settings['content_position'] ) );
+
+ $css->set_selector( '.sidebar .widget' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['sidebar_widget_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['sidebar_widget_repeat'] ) );
+ $css->add_property( 'background-size', esc_attr( $generate_settings['sidebar_widget_size'] ) );
+ $css->add_property( 'background-attachment', esc_attr( $generate_settings['sidebar_widget_attachment'] ) );
+ $css->add_property( 'background-position', esc_attr( $generate_settings['sidebar_widget_position'] ) );
+
+ $css->set_selector( '.footer-widgets' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['footer_widget_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['footer_widget_repeat'] ) );
+ $css->add_property( 'background-size', esc_attr( $generate_settings['footer_widget_size'] ) );
+ $css->add_property( 'background-attachment', esc_attr( $generate_settings['footer_widget_attachment'] ) );
+ $css->add_property( 'background-position', esc_attr( $generate_settings['footer_widget_position'] ) );
+
+ $css->set_selector( '.site-info' );
+ $css->add_property( 'background-image', esc_url( $generate_settings['footer_image'] ), 'url' );
+ $css->add_property( 'background-repeat', esc_attr( $generate_settings['footer_repeat'] ) );
+ $css->add_property( 'background-size', esc_attr( $generate_settings['footer_size'] ) );
+ $css->add_property( 'background-attachment', esc_attr( $generate_settings['footer_attachment'] ) );
+ $css->add_property( 'background-position', esc_attr( $generate_settings['footer_position'] ) );
+
+ return apply_filters( 'generate_backgrounds_css_output', $css->css_output() );
+ }
+}
+
+if ( ! function_exists( 'generate_background_scripts' ) ) {
+ add_action( 'wp_enqueue_scripts', 'generate_background_scripts', 70 );
+ /**
+ * Enqueue scripts and styles.
+ *
+ * @since 0.1
+ */
+ function generate_background_scripts() {
+ if ( 'inline' === generate_get_css_print_method() ) {
+ wp_add_inline_style( 'generate-style', generate_backgrounds_css() );
+ }
+ }
+}
+
+add_filter( 'generate_external_dynamic_css_output', 'generate_backgrounds_add_external_css' );
+/**
+ * Add to external stylesheet.
+ *
+ * @since 1.11.0
+ *
+ * @param string $css Existing CSS.
+ */
+function generate_backgrounds_add_external_css( $css ) {
+ if ( 'inline' === generate_get_css_print_method() ) {
+ return $css;
+ }
+
+ $css .= generate_backgrounds_css();
+
+ return $css;
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/secondary-nav-backgrounds.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/secondary-nav-backgrounds.php
new file mode 100644
index 00000000..fdc17f1d
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/secondary-nav-backgrounds.php
@@ -0,0 +1,420 @@
+get_section( 'secondary_nav_section' ) ) {
+ return;
+ }
+
+ $defaults = generate_secondary_nav_get_defaults();
+
+ if ( method_exists( $wp_customize, 'register_control_type' ) ) {
+ $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' );
+ }
+
+ require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php';
+
+ $wp_customize->add_section(
+ 'secondary_bg_images_section',
+ array(
+ 'title' => __( 'Secondary Navigation', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'description' => '',
+ 'panel' => 'generate_backgrounds_panel',
+ 'priority' => 21,
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_secondary_navigation_background_image_shortcuts',
+ array(
+ 'section' => 'secondary_bg_images_section',
+ 'element' => __( 'Secondary Navigation', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'secondary_nav_section',
+ 'colors' => 'secondary_navigation_color_section',
+ 'typography' => 'secondary_font_section',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[nav_image]',
+ array(
+ 'default' => $defaults['nav_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_secondary_backgrounds-nav-image',
+ array(
+ 'section' => 'secondary_bg_images_section',
+ 'settings' => 'generate_secondary_nav_settings[nav_image]',
+ 'priority' => 750,
+ 'label' => __( 'Navigation', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[nav_repeat]',
+ array(
+ 'default' => $defaults['nav_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_secondary_nav_settings[nav_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'secondary_bg_images_section',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_secondary_nav_settings[nav_repeat]',
+ 'priority' => 800,
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[nav_item_image]',
+ array(
+ 'default' => $defaults['nav_item_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_secondary_backgrounds-nav-item-image',
+ array(
+ 'section' => 'secondary_bg_images_section',
+ 'settings' => 'generate_secondary_nav_settings[nav_item_image]',
+ 'priority' => 950,
+ 'label' => __( 'Navigation Item', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[nav_item_repeat]',
+ array(
+ 'default' => $defaults['nav_item_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_secondary_nav_settings[nav_item_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'secondary_bg_images_section',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_secondary_nav_settings[nav_item_repeat]',
+ 'priority' => 1000,
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[nav_item_hover_image]',
+ array(
+ 'default' => $defaults['nav_item_hover_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_secondary_backgrounds-nav-item-hover-image',
+ array(
+ 'section' => 'secondary_bg_images_section',
+ 'settings' => 'generate_secondary_nav_settings[nav_item_hover_image]',
+ 'priority' => 1150,
+ 'label' => __( 'Navigation Item Hover', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[nav_item_hover_repeat]',
+ array(
+ 'default' => $defaults['nav_item_hover_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_secondary_nav_settings[nav_item_hover_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'secondary_bg_images_section',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_secondary_nav_settings[nav_item_hover_repeat]',
+ 'priority' => 1200,
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[nav_item_current_image]',
+ array(
+ 'default' => $defaults['nav_item_current_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_secondary_backgrounds-nav-item-current-image',
+ array(
+ 'section' => 'secondary_bg_images_section',
+ 'settings' => 'generate_secondary_nav_settings[nav_item_current_image]',
+ 'priority' => 1350,
+ 'label' => __( 'Navigation Item Current', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[nav_item_current_repeat]',
+ array(
+ 'default' => $defaults['nav_item_current_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_secondary_nav_settings[nav_item_current_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'secondary_bg_images_section',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_secondary_nav_settings[nav_item_current_repeat]',
+ 'priority' => 1400,
+ )
+ );
+
+ $wp_customize->add_section(
+ 'secondary_subnav_bg_images_section',
+ array(
+ 'title' => __( 'Secondary Sub-Navigation', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'description' => '',
+ 'panel' => 'generate_backgrounds_panel',
+ 'priority' => 22,
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[sub_nav_item_image]',
+ array(
+ 'default' => $defaults['sub_nav_item_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_secondary_backgrounds-sub-nav-item-image',
+ array(
+ 'section' => 'secondary_subnav_bg_images_section',
+ 'settings' => 'generate_secondary_nav_settings[sub_nav_item_image]',
+ 'priority' => 1700,
+ 'label' => __( 'Sub-Navigation Item', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[sub_nav_item_repeat]',
+ array(
+ 'default' => $defaults['sub_nav_item_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_secondary_nav_settings[sub_nav_item_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'secondary_subnav_bg_images_section',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_secondary_nav_settings[sub_nav_item_repeat]',
+ 'priority' => 1800,
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[sub_nav_item_hover_image]',
+ array(
+ 'default' => $defaults['sub_nav_item_hover_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_secondary_backgrounds-sub-nav-item-hover-image',
+ array(
+ 'section' => 'secondary_subnav_bg_images_section',
+ 'settings' => 'generate_secondary_nav_settings[sub_nav_item_hover_image]',
+ 'priority' => 2000,
+ 'label' => __( 'Sub-Navigation Item Hover', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[sub_nav_item_hover_repeat]',
+ array(
+ 'default' => $defaults['sub_nav_item_hover_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_secondary_nav_settings[sub_nav_item_hover_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'secondary_subnav_bg_images_section',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_secondary_nav_settings[sub_nav_item_hover_repeat]',
+ 'priority' => 2100,
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[sub_nav_item_current_image]',
+ array(
+ 'default' => $defaults['sub_nav_item_current_image'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'generate_secondary_backgrounds-sub-nav-item-current-image',
+ array(
+ 'section' => 'secondary_subnav_bg_images_section',
+ 'settings' => 'generate_secondary_nav_settings[sub_nav_item_current_image]',
+ 'priority' => 2300,
+ 'label' => __( 'Sub-Navigation Item Current', 'gp-premium' ),
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[sub_nav_item_current_repeat]',
+ array(
+ 'default' => $defaults['sub_nav_item_current_repeat'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_secondary_nav_settings[sub_nav_item_current_repeat]',
+ array(
+ 'type' => 'select',
+ 'section' => 'secondary_subnav_bg_images_section',
+ 'choices' => array(
+ '' => __( 'Repeat', 'gp-premium' ),
+ 'repeat-x' => __( 'Repeat x', 'gp-premium' ),
+ 'repeat-y' => __( 'Repeat y', 'gp-premium' ),
+ 'no-repeat' => __( 'No Repeat', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_secondary_nav_settings[sub_nav_item_current_repeat]',
+ 'priority' => 2400,
+ )
+ );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/generate-backgrounds.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/generate-backgrounds.php
new file mode 100644
index 00000000..d9cd1055
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/generate-backgrounds.php
@@ -0,0 +1,19 @@
+post_count ) {
+ $columns = false;
+ }
+ }
+
+ // Return the result.
+ return apply_filters( 'generate_blog_columns', $columns );
+ }
+}
+
+if ( ! function_exists( 'generate_blog_get_masonry' ) ) {
+ /**
+ * Check if masonry is enabled.
+ * This function is a mess with strings as bools etc.. Will re-write in a big upate to get lots of testing.
+ */
+ function generate_blog_get_masonry() {
+ $generate_blog_settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ // If masonry is enabled via option or filter, enable it.
+ // phpcs:ignore -- non-strict comparison allowed.
+ if ( $generate_blog_settings['masonry'] || 'true' == apply_filters( 'generate_blog_masonry', 'false' ) ) {
+ $masonry = 'true';
+ } else {
+ $masonry = 'false';
+ }
+
+ // Allow masonry to be turned off using a boolean.
+ if ( false === apply_filters( 'generate_blog_masonry', 'false' ) ) {
+ $masonry = 'false';
+ }
+
+ return $masonry;
+ }
+}
+
+if ( ! function_exists( 'generate_blog_add_columns_container' ) ) {
+ add_action( 'generate_before_main_content', 'generate_blog_add_columns_container' );
+ /**
+ * Add columns container
+ *
+ * @since 1.0
+ */
+ function generate_blog_add_columns_container() {
+ if ( ! generate_blog_get_columns() ) {
+ return;
+ }
+
+ $columns = generate_blog_get_column_count();
+
+ printf(
+ '%2$s',
+ 'false' !== generate_blog_get_masonry() ? 'masonry-container are-images-unloaded' : '',
+ 'false' !== generate_blog_get_masonry() ? '
' : '' // phpcs:ignore -- no escaping needed.
+ );
+ }
+}
+
+if ( ! function_exists( 'generate_blog_add_ending_columns_container' ) ) {
+ add_action( 'generate_after_main_content', 'generate_blog_add_ending_columns_container' );
+ /**
+ * Add closing columns container
+ *
+ * @since 1.0
+ */
+ function generate_blog_add_ending_columns_container() {
+ if ( ! generate_blog_get_columns() ) {
+ return;
+ }
+
+ echo '
';
+ }
+}
+
+if ( ! function_exists( 'generate_blog_columns_css' ) ) {
+ /**
+ * Add inline CSS
+ */
+ function generate_blog_columns_css() {
+ $generate_blog_settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( function_exists( 'generate_spacing_get_defaults' ) ) {
+ $spacing_settings = wp_parse_args(
+ get_option( 'generate_spacing_settings', array() ),
+ generate_spacing_get_defaults()
+ );
+ }
+
+ $separator = ( function_exists( 'generate_spacing_get_defaults' ) ) ? absint( $spacing_settings['separator'] ) : 20;
+
+ $return = '';
+ if ( generate_blog_get_columns() ) {
+ $return .= '.generate-columns {margin-bottom: ' . $separator . 'px;padding-left: ' . $separator . 'px;}';
+ $return .= '.generate-columns-container {margin-left: -' . $separator . 'px;}';
+ $return .= '.page-header {margin-bottom: ' . $separator . 'px;margin-left: ' . $separator . 'px}';
+ $return .= '.generate-columns-container > .paging-navigation {margin-left: ' . $separator . 'px;}';
+ }
+
+ return $return;
+ }
+}
+
+if ( ! function_exists( 'generate_blog_get_column_count' ) ) {
+ /**
+ * Get our column grid class
+ */
+ function generate_blog_get_column_count() {
+ $generate_blog_settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ $count = $generate_blog_settings['columns'];
+
+ return apply_filters( 'generate_blog_get_column_count', $count );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.css
new file mode 100644
index 00000000..1066ab1f
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.css
@@ -0,0 +1,149 @@
+.masonry-enabled .page-header {
+ position: relative !important;
+}
+
+.separate-containers .site-main > .generate-columns-container {
+ margin-bottom: 0;
+}
+
+.masonry-container.are-images-unloaded,
+.load-more.are-images-unloaded,
+.masonry-enabled #nav-below {
+ opacity: 0;
+}
+
+/* columns */
+.generate-columns-container:not(.masonry-container) {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: stretch;
+}
+
+.generate-columns .inside-article {
+ height: 100%;
+ box-sizing: border-box;
+}
+
+.generate-columns-activated.post-image-aligned-left .generate-columns-container article:not(.featured-column) .post-image,
+.generate-columns-activated.post-image-aligned-right .generate-columns-container article:not(.featured-column) .post-image {
+ float: none;
+ text-align: center;
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.generate-columns-container .paging-navigation,
+.generate-columns-container .page-header {
+ flex: 1 1 100%;
+ clear: both;
+}
+
+.generate-columns-container .paging-navigation {
+ margin-bottom: 0;
+}
+
+.load-more:not(.has-svg-icon) .button.loading:before {
+ content: "\e900";
+ display: inline-block;
+ font-family: "GP Premium";
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ animation: spin 2s infinite linear;
+ margin-right: 7px;
+}
+
+.load-more .button:not(.loading) .gp-icon {
+ display: none;
+}
+
+.load-more .gp-icon svg {
+ animation: spin 2s infinite linear;
+ margin-right: 7px;
+}
+
+@keyframes spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+.generate-columns {
+ box-sizing: border-box;
+}
+
+.generate-columns.grid-20,
+.grid-sizer.grid-20 {
+ width: 20%;
+}
+
+.generate-columns.grid-25,
+.grid-sizer.grid-25 {
+ width: 25%;
+}
+
+.generate-columns.grid-33,
+.grid-sizer.grid-33 {
+ width: 33.3333%;
+}
+
+.generate-columns.grid-50,
+.grid-sizer.grid-50 {
+ width: 50%;
+}
+
+.generate-columns.grid-60,
+.grid-sizer.grid-60 {
+ width: 60%;
+}
+
+.generate-columns.grid-66,
+.grid-sizer.grid-66 {
+ width: 66.66667%;
+}
+
+.generate-columns.grid-100,
+.grid-sizer.grid-100 {
+ width: 100%;
+}
+
+@media (min-width: 768px) and (max-width: 1024px) {
+ .generate-columns.tablet-grid-50,
+ .grid-sizer.tablet-grid-50 {
+ width: 50%;
+ }
+}
+
+@media (max-width: 767px) {
+ .generate-columns-activated .generate-columns-container {
+ margin-left: 0;
+ margin-right: 0;
+ }
+ .generate-columns-container > *,
+ .generate-columns-container .generate-columns {
+ padding-left: 0;
+ }
+ .generate-columns-container .page-header {
+ margin-left: 0;
+ }
+ .generate-columns.mobile-grid-100,
+ .grid-sizer.mobile-grid-100 {
+ width: 100%;
+ }
+ .generate-columns-container > .paging-navigation {
+ margin-left: 0;
+ }
+}
+
+@media (max-width: 768px) {
+ .load-more {
+ display: block;
+ text-align: center;
+ margin-bottom: 0;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.min.css
new file mode 100644
index 00000000..3814f76b
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.min.css
@@ -0,0 +1 @@
+.masonry-enabled .page-header{position:relative!important}.separate-containers .site-main>.generate-columns-container{margin-bottom:0}.load-more.are-images-unloaded,.masonry-container.are-images-unloaded,.masonry-enabled #nav-below{opacity:0}.generate-columns-container:not(.masonry-container){display:flex;flex-wrap:wrap;align-items:stretch}.generate-columns .inside-article{height:100%;box-sizing:border-box}.generate-columns-activated.post-image-aligned-left .generate-columns-container article:not(.featured-column) .post-image,.generate-columns-activated.post-image-aligned-right .generate-columns-container article:not(.featured-column) .post-image{float:none;text-align:center;margin-left:0;margin-right:0}.generate-columns-container .page-header,.generate-columns-container .paging-navigation{flex:1 1 100%;clear:both}.generate-columns-container .paging-navigation{margin-bottom:0}.load-more:not(.has-svg-icon) .button.loading:before{content:"\e900";display:inline-block;font-family:"GP Premium";font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;animation:spin 2s infinite linear;margin-right:7px}.load-more .button:not(.loading) .gp-icon{display:none}.load-more .gp-icon svg{animation:spin 2s infinite linear;margin-right:7px}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.generate-columns{box-sizing:border-box}.generate-columns.grid-20,.grid-sizer.grid-20{width:20%}.generate-columns.grid-25,.grid-sizer.grid-25{width:25%}.generate-columns.grid-33,.grid-sizer.grid-33{width:33.3333%}.generate-columns.grid-50,.grid-sizer.grid-50{width:50%}.generate-columns.grid-60,.grid-sizer.grid-60{width:60%}.generate-columns.grid-66,.grid-sizer.grid-66{width:66.66667%}.generate-columns.grid-100,.grid-sizer.grid-100{width:100%}@media (min-width:768px) and (max-width:1024px){.generate-columns.tablet-grid-50,.grid-sizer.tablet-grid-50{width:50%}}@media (max-width:767px){.generate-columns-activated .generate-columns-container{margin-left:0;margin-right:0}.generate-columns-container .generate-columns,.generate-columns-container>*{padding-left:0}.generate-columns-container .page-header{margin-left:0}.generate-columns.mobile-grid-100,.grid-sizer.mobile-grid-100{width:100%}.generate-columns-container>.paging-navigation{margin-left:0}}@media (max-width:768px){.load-more{display:block;text-align:center;margin-bottom:0}}
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.css
new file mode 100644
index 00000000..c3efa57f
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.css
@@ -0,0 +1,104 @@
+.post-image-above-header .inside-article .post-image,
+.post-image-above-header .inside-article .featured-image {
+ margin-top: 0;
+ margin-bottom: 2em;
+}
+
+.post-image-aligned-left .inside-article .post-image,
+.post-image-aligned-left .inside-article .featured-image {
+ margin-top: 0;
+ margin-right: 2em;
+ float: left;
+ text-align: left;
+}
+
+.post-image-aligned-center .post-image,
+.post-image-aligned-center .featured-image {
+ text-align: center;
+}
+
+.post-image-aligned-right .inside-article .post-image,
+.post-image-aligned-right .inside-article .featured-image {
+ margin-top: 0;
+ margin-left: 2em;
+ float: right;
+ text-align: right;
+}
+
+.post-image-below-header.post-image-aligned-right .inside-article .post-image,
+.post-image-below-header.post-image-aligned-right .inside-article .featured-image,
+.post-image-below-header.post-image-aligned-center .inside-article .featured-image,
+.post-image-below-header.post-image-aligned-left .inside-article .post-image,
+.post-image-below-header.post-image-aligned-left .inside-article .featured-image {
+ margin-top: 2em;
+}
+
+.post-image-aligned-left > .featured-image,
+.post-image-aligned-right > .featured-image {
+ float: none;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.post-image-aligned-left .featured-image {
+ text-align: left;
+}
+
+.post-image-aligned-right .featured-image {
+ text-align: right;
+}
+
+.post-image-aligned-left .inside-article:before,
+.post-image-aligned-left .inside-article:after,
+.post-image-aligned-right .inside-article:before,
+.post-image-aligned-right .inside-article:after {
+ content: "";
+ display: table;
+}
+
+.post-image-aligned-left .inside-article:after,
+.post-image-aligned-right .inside-article:after {
+ clear: both;
+}
+
+.one-container.post-image-above-header .page-header + .no-featured-image-padding .inside-article .post-image,
+.one-container.post-image-above-header .no-featured-image-padding.generate-columns .inside-article .post-image {
+ margin-top: 0;
+}
+
+.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .post-image,
+.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,
+.one-container.both-right.post-image-aligned-center .no-featured-image-padding .post-image,
+.one-container.both-right.post-image-aligned-center .no-featured-image-padding .featured-image {
+ margin-right: 0;
+}
+
+.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .post-image,
+.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,
+.one-container.both-left.post-image-aligned-center .no-featured-image-padding .post-image,
+.one-container.both-left.post-image-aligned-center .no-featured-image-padding .featured-image {
+ margin-left: 0;
+}
+
+.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .post-image,
+.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .featured-image {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .post-image,
+.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .featured-image {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+@media (max-width: 768px) {
+ body:not(.post-image-aligned-center) .inside-article .post-image,
+ body:not(.post-image-aligned-center) .featured-image,
+ body:not(.post-image-aligned-center) .inside-article .featured-image {
+ margin-right: 0;
+ margin-left: 0;
+ float: none;
+ text-align: center;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.min.css
new file mode 100644
index 00000000..ba2493d8
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.min.css
@@ -0,0 +1 @@
+.post-image-above-header .inside-article .featured-image,.post-image-above-header .inside-article .post-image{margin-top:0;margin-bottom:2em}.post-image-aligned-left .inside-article .featured-image,.post-image-aligned-left .inside-article .post-image{margin-top:0;margin-right:2em;float:left;text-align:left}.post-image-aligned-center .featured-image,.post-image-aligned-center .post-image{text-align:center}.post-image-aligned-right .inside-article .featured-image,.post-image-aligned-right .inside-article .post-image{margin-top:0;margin-left:2em;float:right;text-align:right}.post-image-below-header.post-image-aligned-center .inside-article .featured-image,.post-image-below-header.post-image-aligned-left .inside-article .featured-image,.post-image-below-header.post-image-aligned-left .inside-article .post-image,.post-image-below-header.post-image-aligned-right .inside-article .featured-image,.post-image-below-header.post-image-aligned-right .inside-article .post-image{margin-top:2em}.post-image-aligned-left>.featured-image,.post-image-aligned-right>.featured-image{float:none;margin-left:auto;margin-right:auto}.post-image-aligned-left .featured-image{text-align:left}.post-image-aligned-right .featured-image{text-align:right}.post-image-aligned-left .inside-article:after,.post-image-aligned-left .inside-article:before,.post-image-aligned-right .inside-article:after,.post-image-aligned-right .inside-article:before{content:"";display:table}.post-image-aligned-left .inside-article:after,.post-image-aligned-right .inside-article:after{clear:both}.one-container.post-image-above-header .no-featured-image-padding.generate-columns .inside-article .post-image,.one-container.post-image-above-header .page-header+.no-featured-image-padding .inside-article .post-image{margin-top:0}.one-container.both-right.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-right.post-image-aligned-center .no-featured-image-padding .post-image,.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .post-image{margin-right:0}.one-container.both-left.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-left.post-image-aligned-center .no-featured-image-padding .post-image,.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .post-image{margin-left:0}.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .post-image{margin-left:0;margin-right:0}.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .featured-image,.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .post-image{margin-left:0;margin-right:0}@media (max-width:768px){body:not(.post-image-aligned-center) .featured-image,body:not(.post-image-aligned-center) .inside-article .featured-image,body:not(.post-image-aligned-center) .inside-article .post-image{margin-right:0;margin-left:0;float:none;text-align:center}}
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.css
new file mode 100644
index 00000000..e79ddd50
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.css
@@ -0,0 +1,254 @@
+.post-image-above-header .inside-article .post-image,
+.post-image-above-header .inside-article .featured-image {
+ margin-top: 0;
+ margin-bottom: 2em;
+}
+
+.post-image-aligned-left .inside-article .post-image,
+.post-image-aligned-left .inside-article .featured-image {
+ margin-top: 0;
+ margin-right: 2em;
+ float: left;
+ text-align: left;
+}
+
+.post-image-aligned-center .post-image,
+.post-image-aligned-center .featured-image {
+ text-align: center;
+}
+
+.post-image-aligned-right .inside-article .post-image,
+.post-image-aligned-right .inside-article .featured-image {
+ margin-top: 0;
+ margin-left: 2em;
+ float: right;
+ text-align: right;
+}
+
+.post-image-below-header.post-image-aligned-right .inside-article .post-image,
+.post-image-below-header.post-image-aligned-right .inside-article .featured-image,
+.post-image-below-header.post-image-aligned-center .inside-article .featured-image,
+.post-image-below-header.post-image-aligned-left .inside-article .post-image,
+.post-image-below-header.post-image-aligned-left .inside-article .featured-image {
+ margin-top: 2em;
+}
+
+.post-image-aligned-left > .featured-image,
+.post-image-aligned-right > .featured-image {
+ float: none;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.post-image-aligned-left .featured-image {
+ text-align: left;
+}
+
+.post-image-aligned-right .featured-image {
+ text-align: right;
+}
+
+.post-image-aligned-left .inside-article:before,
+.post-image-aligned-left .inside-article:after,
+.post-image-aligned-right .inside-article:before,
+.post-image-aligned-right .inside-article:after {
+ content: "";
+ display: table;
+}
+
+.post-image-aligned-left .inside-article:after,
+.post-image-aligned-right .inside-article:after {
+ clear: both;
+}
+
+.one-container.post-image-above-header .page-header + .no-featured-image-padding .inside-article .post-image,
+.one-container.post-image-above-header .no-featured-image-padding.generate-columns .inside-article .post-image {
+ margin-top: 0;
+}
+
+.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .post-image,
+.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,
+.one-container.both-right.post-image-aligned-center .no-featured-image-padding .post-image,
+.one-container.both-right.post-image-aligned-center .no-featured-image-padding .featured-image {
+ margin-right: 0;
+}
+
+.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .post-image,
+.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,
+.one-container.both-left.post-image-aligned-center .no-featured-image-padding .post-image,
+.one-container.both-left.post-image-aligned-center .no-featured-image-padding .featured-image {
+ margin-left: 0;
+}
+
+.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .post-image,
+.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .featured-image {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .post-image,
+.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .featured-image {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+@media (max-width: 768px) {
+ body:not(.post-image-aligned-center) .inside-article .post-image,
+ body:not(.post-image-aligned-center) .featured-image,
+ body:not(.post-image-aligned-center) .inside-article .featured-image {
+ margin-right: 0;
+ margin-left: 0;
+ float: none;
+ text-align: center;
+ }
+}
+
+.masonry-enabled .page-header {
+ position: relative !important;
+}
+
+.separate-containers .site-main > .generate-columns-container {
+ margin-bottom: 0;
+}
+
+.masonry-container.are-images-unloaded,
+.load-more.are-images-unloaded,
+.masonry-enabled #nav-below {
+ opacity: 0;
+}
+
+/* columns */
+.generate-columns-container:not(.masonry-container) {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: stretch;
+}
+
+.generate-columns .inside-article {
+ height: 100%;
+ box-sizing: border-box;
+}
+
+.generate-columns-activated.post-image-aligned-left .generate-columns-container article:not(.featured-column) .post-image,
+.generate-columns-activated.post-image-aligned-right .generate-columns-container article:not(.featured-column) .post-image {
+ float: none;
+ text-align: center;
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.generate-columns-container .paging-navigation,
+.generate-columns-container .page-header {
+ flex: 1 1 100%;
+ clear: both;
+}
+
+.generate-columns-container .paging-navigation {
+ margin-bottom: 0;
+}
+
+.load-more:not(.has-svg-icon) .button.loading:before {
+ content: "\e900";
+ display: inline-block;
+ font-family: "GP Premium";
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ animation: spin 2s infinite linear;
+ margin-right: 7px;
+}
+
+.load-more .button:not(.loading) .gp-icon {
+ display: none;
+}
+
+.load-more .gp-icon svg {
+ animation: spin 2s infinite linear;
+ margin-right: 7px;
+}
+
+@keyframes spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+.generate-columns {
+ box-sizing: border-box;
+}
+
+.generate-columns.grid-20,
+.grid-sizer.grid-20 {
+ width: 20%;
+}
+
+.generate-columns.grid-25,
+.grid-sizer.grid-25 {
+ width: 25%;
+}
+
+.generate-columns.grid-33,
+.grid-sizer.grid-33 {
+ width: 33.3333%;
+}
+
+.generate-columns.grid-50,
+.grid-sizer.grid-50 {
+ width: 50%;
+}
+
+.generate-columns.grid-60,
+.grid-sizer.grid-60 {
+ width: 60%;
+}
+
+.generate-columns.grid-66,
+.grid-sizer.grid-66 {
+ width: 66.66667%;
+}
+
+.generate-columns.grid-100,
+.grid-sizer.grid-100 {
+ width: 100%;
+}
+
+@media (min-width: 768px) and (max-width: 1024px) {
+ .generate-columns.tablet-grid-50,
+ .grid-sizer.tablet-grid-50 {
+ width: 50%;
+ }
+}
+
+@media (max-width: 767px) {
+ .generate-columns-activated .generate-columns-container {
+ margin-left: 0;
+ margin-right: 0;
+ }
+ .generate-columns-container > *,
+ .generate-columns-container .generate-columns {
+ padding-left: 0;
+ }
+ .generate-columns-container .page-header {
+ margin-left: 0;
+ }
+ .generate-columns.mobile-grid-100,
+ .grid-sizer.mobile-grid-100 {
+ width: 100%;
+ }
+ .generate-columns-container > .paging-navigation {
+ margin-left: 0;
+ }
+}
+
+@media (max-width: 768px) {
+ .load-more {
+ display: block;
+ text-align: center;
+ margin-bottom: 0;
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.min.css
new file mode 100644
index 00000000..6f877184
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.min.css
@@ -0,0 +1 @@
+.post-image-above-header .inside-article .featured-image,.post-image-above-header .inside-article .post-image{margin-top:0;margin-bottom:2em}.post-image-aligned-left .inside-article .featured-image,.post-image-aligned-left .inside-article .post-image{margin-top:0;margin-right:2em;float:left;text-align:left}.post-image-aligned-center .featured-image,.post-image-aligned-center .post-image{text-align:center}.post-image-aligned-right .inside-article .featured-image,.post-image-aligned-right .inside-article .post-image{margin-top:0;margin-left:2em;float:right;text-align:right}.post-image-below-header.post-image-aligned-center .inside-article .featured-image,.post-image-below-header.post-image-aligned-left .inside-article .featured-image,.post-image-below-header.post-image-aligned-left .inside-article .post-image,.post-image-below-header.post-image-aligned-right .inside-article .featured-image,.post-image-below-header.post-image-aligned-right .inside-article .post-image{margin-top:2em}.post-image-aligned-left>.featured-image,.post-image-aligned-right>.featured-image{float:none;margin-left:auto;margin-right:auto}.post-image-aligned-left .featured-image{text-align:left}.post-image-aligned-right .featured-image{text-align:right}.post-image-aligned-left .inside-article:after,.post-image-aligned-left .inside-article:before,.post-image-aligned-right .inside-article:after,.post-image-aligned-right .inside-article:before{content:"";display:table}.post-image-aligned-left .inside-article:after,.post-image-aligned-right .inside-article:after{clear:both}.one-container.post-image-above-header .no-featured-image-padding.generate-columns .inside-article .post-image,.one-container.post-image-above-header .page-header+.no-featured-image-padding .inside-article .post-image{margin-top:0}.one-container.both-right.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-right.post-image-aligned-center .no-featured-image-padding .post-image,.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .post-image{margin-right:0}.one-container.both-left.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-left.post-image-aligned-center .no-featured-image-padding .post-image,.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .post-image{margin-left:0}.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .post-image{margin-left:0;margin-right:0}.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .featured-image,.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .post-image{margin-left:0;margin-right:0}@media (max-width:768px){body:not(.post-image-aligned-center) .featured-image,body:not(.post-image-aligned-center) .inside-article .featured-image,body:not(.post-image-aligned-center) .inside-article .post-image{margin-right:0;margin-left:0;float:none;text-align:center}}.masonry-enabled .page-header{position:relative!important}.separate-containers .site-main>.generate-columns-container{margin-bottom:0}.load-more.are-images-unloaded,.masonry-container.are-images-unloaded,.masonry-enabled #nav-below{opacity:0}.generate-columns-container:not(.masonry-container){display:flex;flex-wrap:wrap;align-items:stretch}.generate-columns .inside-article{height:100%;box-sizing:border-box}.generate-columns-activated.post-image-aligned-left .generate-columns-container article:not(.featured-column) .post-image,.generate-columns-activated.post-image-aligned-right .generate-columns-container article:not(.featured-column) .post-image{float:none;text-align:center;margin-left:0;margin-right:0}.generate-columns-container .page-header,.generate-columns-container .paging-navigation{flex:1 1 100%;clear:both}.generate-columns-container .paging-navigation{margin-bottom:0}.load-more:not(.has-svg-icon) .button.loading:before{content:"\e900";display:inline-block;font-family:"GP Premium";font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;animation:spin 2s infinite linear;margin-right:7px}.load-more .button:not(.loading) .gp-icon{display:none}.load-more .gp-icon svg{animation:spin 2s infinite linear;margin-right:7px}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.generate-columns{box-sizing:border-box}.generate-columns.grid-20,.grid-sizer.grid-20{width:20%}.generate-columns.grid-25,.grid-sizer.grid-25{width:25%}.generate-columns.grid-33,.grid-sizer.grid-33{width:33.3333%}.generate-columns.grid-50,.grid-sizer.grid-50{width:50%}.generate-columns.grid-60,.grid-sizer.grid-60{width:60%}.generate-columns.grid-66,.grid-sizer.grid-66{width:66.66667%}.generate-columns.grid-100,.grid-sizer.grid-100{width:100%}@media (min-width:768px) and (max-width:1024px){.generate-columns.tablet-grid-50,.grid-sizer.tablet-grid-50{width:50%}}@media (max-width:767px){.generate-columns-activated .generate-columns-container{margin-left:0;margin-right:0}.generate-columns-container .generate-columns,.generate-columns-container>*{padding-left:0}.generate-columns-container .page-header{margin-left:0}.generate-columns.mobile-grid-100,.grid-sizer.mobile-grid-100{width:100%}.generate-columns-container>.paging-navigation{margin-left:0}}@media (max-width:768px){.load-more{display:block;text-align:center;margin-bottom:0}}
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/customizer.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/customizer.php
new file mode 100644
index 00000000..2c018ea8
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/customizer.php
@@ -0,0 +1,1181 @@
+register_control_type( 'GeneratePress_Title_Customize_Control' );
+ }
+
+ // Remove our blog control from the free theme.
+ if ( $wp_customize->get_control( 'blog_content_control' ) ) {
+ $wp_customize->remove_control( 'blog_content_control' );
+ }
+
+ // Register our custom controls.
+ if ( method_exists( $wp_customize, 'register_control_type' ) ) {
+ $wp_customize->register_control_type( 'GeneratePress_Refresh_Button_Customize_Control' );
+ $wp_customize->register_control_type( 'GeneratePress_Information_Customize_Control' );
+ $wp_customize->register_control_type( 'Generate_Control_Toggle_Customize_Control' );
+ }
+
+ $wp_customize->add_section(
+ 'generate_blog_loop_template_section',
+ array(
+ 'title' => __( 'Blog', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'panel' => 'generate_layout_panel',
+ 'priority' => 40,
+ 'active_callback' => function() {
+ return generate_has_active_element( 'loop-template', true );
+ },
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Information_Customize_Control(
+ $wp_customize,
+ 'generate_using_loop_template',
+ array(
+ 'section' => 'generate_blog_loop_template_section',
+ 'description' => sprintf(
+ /* translators: URL to the Elements dashboard. */
+ __( 'This page is using a Loop Template Element . Other options can be found within that Element.', 'gp-premium' ),
+ admin_url( 'edit.php?post_type=gp_elements' )
+ ),
+ 'notice' => true,
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'active_callback' => function() {
+ return generate_has_active_element( 'loop-template', true );
+ },
+ 'priority' => 0,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[excerpt_length]', array(
+ 'default' => $defaults['excerpt_length'],
+ 'capability' => 'edit_theme_options',
+ 'type' => 'option',
+ 'sanitize_callback' => 'absint',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_loop_template_excerpt_length',
+ array(
+ 'type' => 'number',
+ 'label' => __( 'Excerpt word count', 'gp-premium' ),
+ 'section' => 'generate_blog_loop_template_section',
+ 'settings' => 'generate_blog_settings[excerpt_length]',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[read_more]',
+ array(
+ 'default' => $defaults['read_more'],
+ 'capability' => 'edit_theme_options',
+ 'type' => 'option',
+ 'sanitize_callback' => 'wp_kses_post',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_loop_template_read_more',
+ array(
+ 'type' => 'text',
+ 'label' => __( 'Read more label', 'gp-premium' ),
+ 'section' => 'generate_blog_loop_template_section',
+ 'settings' => 'generate_blog_settings[read_more]',
+ )
+ );
+
+ // Blog content section.
+ $wp_customize->add_section(
+ 'generate_blog_section',
+ array(
+ 'title' => __( 'Blog', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'panel' => 'generate_layout_panel',
+ 'priority' => 40,
+ 'active_callback' => function() {
+ return ! generate_has_active_element( 'loop-template', true );
+ },
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_blog_archives_title',
+ array(
+ 'section' => 'generate_blog_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Content', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new Generate_Control_Toggle_Customize_Control(
+ $wp_customize,
+ 'generate_post_meta_toggle',
+ array(
+ 'section' => 'generate_blog_section',
+ 'targets' => array(
+ 'post-meta-archives' => __( 'Archives', 'gp-premium' ),
+ 'post-meta-single' => __( 'Single', 'gp-premium' ),
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_settings[post_content]',
+ array(
+ 'type' => 'select',
+ 'label' => __( 'Content type', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'choices' => array(
+ 'full' => __( 'Full Content', 'gp-premium' ),
+ 'excerpt' => __( 'Excerpt', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_settings[post_content]',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[excerpt_length]', array(
+ 'type' => 'number',
+ 'label' => __( 'Excerpt word count', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[excerpt_length]',
+ 'active_callback' => 'generate_premium_is_excerpt',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[read_more]', array(
+ 'type' => 'text',
+ 'label' => __( 'Read more label', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[read_more]',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[read_more_button]',
+ array(
+ 'default' => $defaults['read_more_button'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[read_more_button]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display read more as button', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[read_more_button]',
+ )
+ );
+
+ // Post date
+ $wp_customize->add_setting(
+ 'generate_blog_settings[date]',
+ array(
+ 'default' => $defaults['date'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[date]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display post date', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[date]',
+ )
+ );
+
+ // Post author
+ $wp_customize->add_setting(
+ 'generate_blog_settings[author]',
+ array(
+ 'default' => $defaults['author'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[author]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display post author', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[author]',
+ )
+ );
+
+ // Category links
+ $wp_customize->add_setting(
+ 'generate_blog_settings[categories]',
+ array(
+ 'default' => $defaults['categories'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[categories]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display post categories', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[categories]',
+ )
+ );
+
+ // Tag links
+ $wp_customize->add_setting(
+ 'generate_blog_settings[tags]',
+ array(
+ 'default' => $defaults['tags'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[tags]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display post tags', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[tags]',
+ )
+ );
+
+ // Comment link
+ $wp_customize->add_setting(
+ 'generate_blog_settings[comments]',
+ array(
+ 'default' => $defaults['comments'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[comments]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display comment count', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[comments]',
+ )
+ );
+
+ // Infinite scroll
+ $wp_customize->add_setting(
+ 'generate_blog_settings[infinite_scroll]',
+ array(
+ 'default' => $defaults['infinite_scroll'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[infinite_scroll]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Use infinite scroll', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[infinite_scroll]',
+ )
+ );
+
+ // Infinite scroll
+ $wp_customize->add_setting(
+ 'generate_blog_settings[infinite_scroll_button]',
+ array(
+ 'default' => $defaults['infinite_scroll_button'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[infinite_scroll_button]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Use button to load more posts', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[infinite_scroll_button]',
+ 'active_callback' => 'generate_premium_infinite_scroll_active',
+ )
+ );
+
+ // Load more text
+ $wp_customize->add_setting(
+ 'generate_blog_settings[masonry_load_more]', array(
+ 'default' => $defaults['masonry_load_more'],
+ 'capability' => 'edit_theme_options',
+ 'type' => 'option',
+ 'sanitize_callback' => 'wp_kses_post',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'blog_masonry_load_more_control', array(
+ 'label' => __( 'Load more label', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[masonry_load_more]',
+ 'active_callback' => 'generate_premium_infinite_scroll_button_active',
+ )
+ );
+
+ // Loading text
+ $wp_customize->add_setting(
+ 'generate_blog_settings[masonry_loading]', array(
+ 'default' => $defaults['masonry_loading'],
+ 'capability' => 'edit_theme_options',
+ 'type' => 'option',
+ 'sanitize_callback' => 'wp_kses_post',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'blog_masonry_loading_control', array(
+ 'label' => __( 'Loading label', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[masonry_loading]',
+ 'active_callback' => 'generate_premium_infinite_scroll_button_active',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_date]',
+ array(
+ 'default' => $defaults['single_date'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_date]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display post date', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[single_date]',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_author]',
+ array(
+ 'default' => $defaults['single_author'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_author]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display post author', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[single_author]',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_categories]',
+ array(
+ 'default' => $defaults['single_categories'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_categories]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display post categories', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[single_categories]',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_tags]',
+ array(
+ 'default' => $defaults['single_tags'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_tags]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display post tags', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[single_tags]',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_post_navigation]',
+ array(
+ 'default' => $defaults['single_post_navigation'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_post_navigation]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display post navigation', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[single_post_navigation]',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_blog_featured_images_title',
+ array(
+ 'section' => 'generate_blog_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Featured Images', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new Generate_Control_Toggle_Customize_Control(
+ $wp_customize,
+ 'generate_featured_image_toggle',
+ array(
+ 'section' => 'generate_blog_section',
+ 'targets' => array(
+ 'featured-image-archives' => __( 'Archives', 'gp-premium' ),
+ 'featured-image-single' => __( 'Posts', 'gp-premium' ),
+ 'featured-image-page' => __( 'Pages', 'gp-premium' ),
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ // Show featured images
+ $wp_customize->add_setting(
+ 'generate_blog_settings[post_image]',
+ array(
+ 'default' => $defaults['post_image'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[post_image]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display featured images', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[post_image]',
+ )
+ );
+
+ // Padding
+ $wp_customize->add_setting(
+ 'generate_blog_settings[post_image_padding]',
+ array(
+ 'default' => $defaults['post_image_padding'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[post_image_padding]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display padding around images', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[post_image_padding]',
+ 'active_callback' => 'generate_premium_display_image_padding',
+ )
+ );
+
+ // Location
+ $wp_customize->add_setting(
+ 'generate_blog_settings[post_image_position]',
+ array(
+ 'default' => $defaults['post_image_position'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[post_image_position]',
+ array(
+ 'type' => 'select',
+ 'label' => __( 'Location', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'choices' => array(
+ '' => __( 'Below Title', 'gp-premium' ),
+ 'post-image-above-header' => __( 'Above Title', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_blog_settings[post_image_position]',
+ 'active_callback' => 'generate_premium_featured_image_active',
+ )
+ );
+
+ // Alignment
+ $wp_customize->add_setting(
+ 'generate_blog_settings[post_image_alignment]',
+ array(
+ 'default' => $defaults['post_image_alignment'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[post_image_alignment]',
+ array(
+ 'type' => 'select',
+ 'label' => __( 'Alignment', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'choices' => array(
+ 'post-image-aligned-center' => __( 'Center', 'gp-premium' ),
+ 'post-image-aligned-left' => __( 'Left', 'gp-premium' ),
+ 'post-image-aligned-right' => __( 'Right', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_blog_settings[post_image_alignment]',
+ 'active_callback' => 'generate_premium_featured_image_active',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[post_image_size]',
+ array(
+ 'default' => $defaults['post_image_size'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[post_image_size]',
+ array(
+ 'type' => 'select',
+ 'label' => __( 'Media Attachment Size', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'choices' => generate_blog_get_image_sizes(),
+ 'settings' => 'generate_blog_settings[post_image_size]',
+ 'active_callback' => 'generate_premium_featured_image_active',
+ )
+ );
+
+ // Width
+ $wp_customize->add_setting(
+ 'generate_blog_settings[post_image_width]', array(
+ 'default' => $defaults['post_image_width'],
+ 'capability' => 'edit_theme_options',
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_empty_absint',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[post_image_width]',
+ array(
+ 'type' => 'number',
+ 'label' => __( 'Width', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[post_image_width]',
+ 'active_callback' => 'generate_premium_featured_image_active',
+ )
+ );
+
+ // Height
+ $wp_customize->add_setting(
+ 'generate_blog_settings[post_image_height]', array(
+ 'default' => $defaults['post_image_height'],
+ 'capability' => 'edit_theme_options',
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_empty_absint',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[post_image_height]',
+ array(
+ 'type' => 'number',
+ 'label' => __( 'Height', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[post_image_height]',
+ 'active_callback' => 'generate_premium_featured_image_active',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Information_Customize_Control(
+ $wp_customize,
+ 'generate_regenerate_images_notice',
+ array(
+ 'section' => 'generate_blog_section',
+ 'description' => sprintf(
+ __( 'We will attempt to serve exact image sizes based on your width/height settings. If that is not possible, we will resize your images using CSS. Learn more about featured image sizing %s.', 'gp-premium' ),
+ '' . __( 'here', 'gp-premium' ) . ' '
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'active_callback' => 'generate_premium_featured_image_active',
+ )
+ )
+ );
+
+ /*
+ * Single featured images
+ */
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_post_image]',
+ array(
+ 'default' => $defaults['single_post_image'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_post_image]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display featured images', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[single_post_image]',
+ )
+ );
+
+ // Padding
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_post_image_padding]',
+ array(
+ 'default' => $defaults['single_post_image_padding'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_post_image_padding]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display padding around images', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[single_post_image_padding]',
+ 'active_callback' => 'generate_premium_display_image_padding_single',
+ )
+ );
+
+ // Location
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_post_image_position]',
+ array(
+ 'default' => $defaults['single_post_image_position'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_post_image_position]',
+ array(
+ 'type' => 'select',
+ 'label' => __( 'Location', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'choices' => array(
+ 'below-title' => __( 'Below Title', 'gp-premium' ),
+ 'inside-content' => __( 'Above Title', 'gp-premium' ),
+ 'above-content' => __( 'Above Content Area', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_blog_settings[single_post_image_position]',
+ 'active_callback' => 'generate_premium_single_featured_image_active',
+ )
+ );
+
+ // Alignment
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_post_image_alignment]',
+ array(
+ 'default' => $defaults['single_post_image_alignment'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_post_image_alignment]',
+ array(
+ 'type' => 'select',
+ 'label' => __( 'Alignment', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'choices' => array(
+ 'center' => __( 'Center', 'gp-premium' ),
+ 'left' => __( 'Left', 'gp-premium' ),
+ 'right' => __( 'Right', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_blog_settings[single_post_image_alignment]',
+ 'active_callback' => 'generate_premium_single_featured_image_active',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_post_image_size]',
+ array(
+ 'default' => $defaults['single_post_image_size'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_post_image_size]',
+ array(
+ 'type' => 'select',
+ 'label' => __( 'Media Attachment Size', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'choices' => generate_blog_get_image_sizes(),
+ 'settings' => 'generate_blog_settings[single_post_image_size]',
+ 'active_callback' => 'generate_premium_single_featured_image_active',
+ )
+ );
+
+ // Width
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_post_image_width]', array(
+ 'default' => $defaults['single_post_image_width'],
+ 'capability' => 'edit_theme_options',
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_empty_absint',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_post_image_width]',
+ array(
+ 'type' => 'number',
+ 'label' => __( 'Width', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[single_post_image_width]',
+ 'active_callback' => 'generate_premium_single_featured_image_active',
+ )
+ );
+
+ // Height
+ $wp_customize->add_setting(
+ 'generate_blog_settings[single_post_image_height]', array(
+ 'default' => $defaults['single_post_image_height'],
+ 'capability' => 'edit_theme_options',
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_empty_absint',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[single_post_image_height]',
+ array(
+ 'type' => 'number',
+ 'label' => __( 'Height', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[single_post_image_height]',
+ 'active_callback' => 'generate_premium_single_featured_image_active',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Information_Customize_Control(
+ $wp_customize,
+ 'generate_regenerate_single_post_images_notice',
+ array(
+ 'section' => 'generate_blog_section',
+ 'description' => sprintf(
+ __( 'We will attempt to serve exact image sizes based on your width/height settings. If that is not possible, we will resize your images using CSS. Learn more about featured image sizing %s.', 'gp-premium' ),
+ '' . __( 'here', 'gp-premium' ) . ' '
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'active_callback' => 'generate_premium_single_featured_image_active',
+ )
+ )
+ );
+
+ /*
+ * Page featured images
+ */
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[page_post_image]',
+ array(
+ 'default' => $defaults['page_post_image'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[page_post_image]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display featured images', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[page_post_image]',
+ )
+ );
+
+ // Padding
+ $wp_customize->add_setting(
+ 'generate_blog_settings[page_post_image_padding]',
+ array(
+ 'default' => $defaults['page_post_image_padding'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[page_post_image_padding]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display padding around images', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[page_post_image_padding]',
+ 'active_callback' => 'generate_premium_display_image_padding_single_page',
+ )
+ );
+
+ // Location
+ $wp_customize->add_setting(
+ 'generate_blog_settings[page_post_image_position]',
+ array(
+ 'default' => $defaults['page_post_image_position'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[page_post_image_position]',
+ array(
+ 'type' => 'select',
+ 'label' => __( 'Location', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'choices' => array(
+ 'below-title' => __( 'Below Title', 'gp-premium' ),
+ 'inside-content' => __( 'Above Title', 'gp-premium' ),
+ 'above-content' => __( 'Above Content Area', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_blog_settings[page_post_image_position]',
+ 'active_callback' => 'generate_premium_single_page_featured_image_active',
+ )
+ );
+
+ // Alignment
+ $wp_customize->add_setting(
+ 'generate_blog_settings[page_post_image_alignment]',
+ array(
+ 'default' => $defaults['page_post_image_alignment'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[page_post_image_alignment]',
+ array(
+ 'type' => 'select',
+ 'label' => __( 'Alignment', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'choices' => array(
+ 'center' => __( 'Center', 'gp-premium' ),
+ 'left' => __( 'Left', 'gp-premium' ),
+ 'right' => __( 'Right', 'gp-premium' ),
+ ),
+ 'settings' => 'generate_blog_settings[page_post_image_alignment]',
+ 'active_callback' => 'generate_premium_single_page_featured_image_active',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_blog_settings[page_post_image_size]',
+ array(
+ 'default' => $defaults['page_post_image_size'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[page_post_image_size]',
+ array(
+ 'type' => 'select',
+ 'label' => __( 'Media Attachment Size', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'choices' => generate_blog_get_image_sizes(),
+ 'settings' => 'generate_blog_settings[page_post_image_size]',
+ 'active_callback' => 'generate_premium_single_page_featured_image_active',
+ )
+ );
+
+ // Width
+ $wp_customize->add_setting(
+ 'generate_blog_settings[page_post_image_width]', array(
+ 'default' => $defaults['page_post_image_width'],
+ 'capability' => 'edit_theme_options',
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_empty_absint',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[page_post_image_width]',
+ array(
+ 'type' => 'number',
+ 'label' => __( 'Width', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[page_post_image_width]',
+ 'active_callback' => 'generate_premium_single_page_featured_image_active',
+ )
+ );
+
+ // Height
+ $wp_customize->add_setting(
+ 'generate_blog_settings[page_post_image_height]', array(
+ 'default' => $defaults['page_post_image_height'],
+ 'capability' => 'edit_theme_options',
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_empty_absint',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[page_post_image_height]',
+ array(
+ 'type' => 'number',
+ 'label' => __( 'Height', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[page_post_image_height]',
+ 'active_callback' => 'generate_premium_single_page_featured_image_active',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Information_Customize_Control(
+ $wp_customize,
+ 'generate_regenerate_page_images_notice',
+ array(
+ 'section' => 'generate_blog_section',
+ 'description' => sprintf(
+ __( 'We will attempt to serve exact image sizes based on your width/height settings. If that is not possible, we will resize your images using CSS. Learn more about featured image sizing %s.', 'gp-premium' ),
+ '' . __( 'here', 'gp-premium' ) . ' '
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'active_callback' => 'generate_premium_single_page_featured_image_active',
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_blog_columns_title',
+ array(
+ 'section' => 'generate_blog_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Columns', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ // Enable columns
+ $wp_customize->add_setting(
+ 'generate_blog_settings[column_layout]',
+ array(
+ 'default' => $defaults['column_layout'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[column_layout]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display posts in columns', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[column_layout]',
+ )
+ );
+
+ // Column count class
+ $wp_customize->add_setting(
+ 'generate_blog_settings[columns]',
+ array(
+ 'default' => $defaults['columns'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_choices',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[columns]',
+ array(
+ 'type' => 'select',
+ 'label' => __( 'Columns', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'choices' => array(
+ '50' => '2',
+ '33' => '3',
+ '25' => '4',
+ '20' => '5'
+ ),
+ 'settings' => 'generate_blog_settings[columns]',
+ 'active_callback' => 'generate_premium_blog_columns_active',
+ )
+ );
+
+ // Featured column
+ $wp_customize->add_setting(
+ 'generate_blog_settings[featured_column]',
+ array(
+ 'default' => $defaults['featured_column'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[featured_column]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Make first post featured', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[featured_column]',
+ 'active_callback' => 'generate_premium_blog_columns_active',
+ )
+ );
+
+ // Masonry
+ $wp_customize->add_setting(
+ 'generate_blog_settings[masonry]',
+ array(
+ 'default' => $defaults['masonry'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_checkbox',
+ )
+ );
+
+ $wp_customize->add_control(
+ 'generate_blog_settings[masonry]',
+ array(
+ 'type' => 'checkbox',
+ 'label' => __( 'Display posts in masonry grid', 'gp-premium' ),
+ 'section' => 'generate_blog_section',
+ 'settings' => 'generate_blog_settings[masonry]',
+ 'active_callback' => 'generate_premium_blog_columns_active',
+ )
+ );
+ }
+}
+
+add_action( 'customize_controls_print_styles', 'generate_blog_customizer_controls_css' );
+
+function generate_blog_customizer_controls_css() {
+ ?>
+
+ '55',
+ 'read_more' => __( 'Read more', 'gp-premium' ),
+ 'read_more_button' => false,
+ 'masonry' => false,
+ 'masonry_load_more' => __( '+ More', 'gp-premium' ),
+ 'masonry_loading' => __( 'Loading...', 'gp-premium' ),
+ 'infinite_scroll' => false,
+ 'infinite_scroll_button' => false,
+ 'post_image' => true,
+ 'post_image_position' => '',
+ 'post_image_alignment' => 'post-image-aligned-center',
+ 'post_image_size' => 'full',
+ 'post_image_width' => '',
+ 'post_image_height' => '',
+ 'post_image_padding' => true,
+ 'single_post_image' => true,
+ 'single_post_image_position' => 'inside-content',
+ 'single_post_image_alignment' => 'center',
+ 'single_post_image_size' => 'full',
+ 'single_post_image_width' => '',
+ 'single_post_image_height' => '',
+ 'single_post_image_padding' => true,
+ 'page_post_image' => true,
+ 'page_post_image_position' => 'above-content',
+ 'page_post_image_alignment' => 'center',
+ 'page_post_image_size' => 'full',
+ 'page_post_image_width' => '',
+ 'page_post_image_height' => '',
+ 'page_post_image_padding' => true,
+ 'date' => true,
+ 'author' => true,
+ 'categories' => true,
+ 'tags' => true,
+ 'comments' => true,
+ 'single_date' => true,
+ 'single_author' => true,
+ 'single_categories' => true,
+ 'single_tags' => true,
+ 'single_post_navigation' => true,
+ 'column_layout' => false,
+ 'columns' => '50',
+ 'featured_column' => false,
+ );
+
+ return apply_filters( 'generate_blog_option_defaults', $generate_blog_defaults );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/generate-blog.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/generate-blog.php
new file mode 100644
index 00000000..8084da2f
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/generate-blog.php
@@ -0,0 +1,714 @@
+ $settings['masonry_load_more'],
+ 'loading' => $settings['masonry_loading'],
+ 'icon' => function_exists( 'generate_get_svg_icon' ) ? generate_get_svg_icon( 'spinner' ) : '',
+ 'masonryInit' => apply_filters(
+ 'generate_blog_masonry_init',
+ array(
+ 'columnWidth' => '.grid-sizer',
+ 'itemSelector' => '.masonry-post',
+ 'stamp' => '.page-header',
+ 'percentPosition' => true,
+ 'stagger' => 30,
+ 'visibleStyle' => array(
+ 'transform' => 'translateY(0)',
+ 'opacity' => 1,
+ ),
+ 'hiddenStyle' => array(
+ 'transform' => 'translateY(5px)',
+ 'opacity' => 0,
+ ),
+ )
+ ),
+ 'infiniteScrollInit' => apply_filters(
+ 'generate_blog_infinite_scroll_init',
+ array(
+ 'path' => '.infinite-scroll-path a',
+ 'append' => '#main .infinite-scroll-item',
+ 'history' => false,
+ 'loadOnScroll' => $settings['infinite_scroll_button'] ? false : true,
+ 'button' => $settings['infinite_scroll_button'] ? '.load-more a' : null,
+ 'scrollThreshold' => $settings['infinite_scroll_button'] ? false : 600,
+ )
+ ),
+ )
+ );
+ }
+
+ $needs_columns_css = false;
+ $needs_featured_image_css = false;
+
+ if ( generate_blog_get_columns() || $settings['infinite_scroll'] ) {
+ $needs_columns_css = true;
+ }
+
+ if ( ! is_singular() ) {
+ if ( $settings['post_image'] ) {
+ $needs_featured_image_css = true;
+ }
+ }
+
+ if ( is_page() && has_post_thumbnail() ) {
+ if ( $settings['page_post_image'] ) {
+ $needs_featured_image_css = true;
+ }
+ }
+
+ if ( is_single() && has_post_thumbnail() ) {
+ if ( $settings['single_post_image'] ) {
+ $needs_featured_image_css = true;
+ }
+ }
+
+ if ( $needs_columns_css && $needs_featured_image_css ) {
+ wp_enqueue_style( 'generate-blog', plugin_dir_url( __FILE__ ) . "css/style{$suffix}.css", array(), GENERATE_BLOG_VERSION );
+ } elseif ( $needs_columns_css ) {
+ wp_enqueue_style( 'generate-blog-columns', plugin_dir_url( __FILE__ ) . "css/columns{$suffix}.css", array(), GENERATE_BLOG_VERSION );
+ } elseif ( $needs_featured_image_css ) {
+ wp_enqueue_style( 'generate-blog-images', plugin_dir_url( __FILE__ ) . "css/featured-images{$suffix}.css", array(), GENERATE_BLOG_VERSION );
+ }
+ }
+}
+
+if ( ! function_exists( 'generate_blog_post_classes' ) ) {
+ add_filter( 'post_class', 'generate_blog_post_classes' );
+ /**
+ * Adds custom classes to the content container
+ *
+ * @since 0.1
+ */
+ function generate_blog_post_classes( $classes ) {
+ global $wp_query;
+ $paged = get_query_var( 'paged' );
+ $paged = $paged ? $paged : 1;
+
+ // Get our options
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( $settings['infinite_scroll'] ) {
+ $classes[] = 'infinite-scroll-item';
+ }
+
+ // Set our masonry class
+ if ( 'true' == generate_blog_get_masonry() && generate_blog_get_columns() ) {
+ $classes[] = 'masonry-post';
+ }
+
+ // Set our column classes
+ if ( generate_blog_get_columns() && ! is_singular() ) {
+ $classes[] = 'generate-columns';
+ $classes[] = 'tablet-grid-50';
+ $classes[] = 'mobile-grid-100';
+ $classes[] = 'grid-parent';
+
+ // Set our featured column class
+ if ( $wp_query->current_post == 0 && $paged == 1 && $settings['featured_column'] ) {
+ if ( 50 == generate_blog_get_column_count() ) {
+ $classes[] = 'grid-100';
+ }
+
+ if ( 33 == generate_blog_get_column_count() ) {
+ $classes[] = 'grid-66';
+ }
+
+ if ( 25 == generate_blog_get_column_count() ) {
+ $classes[] = 'grid-50';
+ }
+
+ if ( 20 == generate_blog_get_column_count() ) {
+ $classes[] = 'grid-60';
+ }
+ $classes[] = 'featured-column';
+ } else {
+ $classes[] = 'grid-' . generate_blog_get_column_count();
+ }
+ }
+
+ if ( ! $settings['post_image_padding'] && ! is_singular() ) {
+ $classes[] = 'no-featured-image-padding';
+ }
+
+ $location = generate_blog_get_singular_template();
+
+ if ( ! $settings[$location . '_post_image_padding'] && is_singular() ) {
+ $classes[] = 'no-featured-image-padding';
+ }
+
+ $atts = generate_get_blog_image_attributes();
+
+ if ( ! is_singular() && has_post_thumbnail() && ! empty( $atts ) ) {
+ $values = array(
+ $atts['width'],
+ $atts['height'],
+ $atts['crop'],
+ );
+
+ $image_src = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID(), 'full' ), $values );
+
+ if ( $image_src && ( ! $image_src[3] || ! apply_filters( 'generate_use_featured_image_size_match', true ) ) ) {
+ $classes[] = 'resize-featured-image';
+ }
+ }
+
+ return $classes;
+ }
+}
+
+if ( ! function_exists( 'generate_blog_body_classes' ) ) {
+ add_filter( 'body_class', 'generate_blog_body_classes' );
+ /**
+ * Adds custom classes to the body
+ *
+ * @since 0.1
+ */
+ function generate_blog_body_classes( $classes ) {
+ // Get theme options
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( is_singular() ) {
+ $location = generate_blog_get_singular_template();
+
+ if ( 'below-title' == $settings[$location . '_post_image_position'] ) {
+ $classes[] = 'post-image-below-header';
+ }
+
+ if ( 'inside-content' == $settings[$location . '_post_image_position'] ) {
+ $classes[] = 'post-image-above-header';
+ }
+
+ $classes[] = ( ! empty( $settings[$location . '_post_image_alignment'] ) ) ? 'post-image-aligned-' . $settings[$location . '_post_image_alignment'] : 'post-image-aligned-center';
+ } else {
+ $classes[] = ( '' == $settings['post_image_position'] ) ? 'post-image-below-header' : 'post-image-above-header';
+ $classes[] = ( ! empty( $settings['post_image_alignment'] ) ) ? $settings['post_image_alignment'] : 'post-image-aligned-center';
+ }
+
+ if ( 'true' == generate_blog_get_masonry() && generate_blog_get_columns() ) {
+ $classes[] = 'masonry-enabled';
+ }
+
+ if ( generate_blog_get_columns() && ! is_singular() ) {
+ $classes[] = 'generate-columns-activated';
+ }
+
+ if ( $settings[ 'infinite_scroll' ] && ! is_singular() ) {
+ $classes[] = 'infinite-scroll';
+ }
+
+ return $classes;
+ }
+}
+
+if ( ! function_exists( 'generate_excerpt_length' ) ) {
+ add_filter( 'excerpt_length', 'generate_excerpt_length', 15 );
+ /**
+ * Set our excerpt length
+ *
+ * @since 0.1
+ */
+ function generate_excerpt_length( $length ) {
+ $generate_settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+ return absint( apply_filters( 'generate_excerpt_length', $generate_settings['excerpt_length'] ) );
+ }
+}
+
+if ( ! function_exists( 'generate_blog_css' ) ) {
+ /**
+ * Build our inline CSS
+ *
+ * @since 0.1
+ */
+ function generate_blog_css() {
+ global $post;
+ $return = '';
+
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( ! defined( 'GENERATE_VERSION' ) ) {
+ return;
+ }
+
+ if ( version_compare( GENERATE_VERSION, '3.0.0-alpha.1', '<' ) ) {
+ // Get disable headline meta.
+ $disable_headline = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate-disable-headline', true ) : '';
+
+ if ( ! $settings['categories'] && ! $settings['comments'] && ! $settings['tags'] && ! is_singular() ) {
+ $return .= '.blog footer.entry-meta, .archive footer.entry-meta {display:none;}';
+ }
+
+ if ( ! $settings['single_date'] && ! $settings['single_author'] && $disable_headline && is_singular() ) {
+ $return .= '.single .entry-header{display:none;}.single .entry-content {margin-top:0;}';
+ }
+
+ if ( ! $settings['date'] && ! $settings['author'] && ! is_singular() ) {
+ $return .= '.entry-header .entry-meta {display:none;}';
+ }
+
+ if ( ! $settings['single_date'] && ! $settings['single_author'] && is_singular() ) {
+ $return .= '.entry-header .entry-meta {display:none;}';
+ }
+
+ if ( ! $settings['single_post_navigation'] && is_singular() ) {
+ $return .= '.post-navigation {display:none;}';
+ }
+
+ if ( ! $settings['single_categories'] && ! $settings['single_post_navigation'] && ! $settings['single_tags'] && is_singular() ) {
+ $return .= '.single footer.entry-meta {display:none;}';
+ }
+ }
+
+ $separator = 20;
+ $content_padding_top = 40;
+ $content_padding_right = 40;
+ $content_padding_left = 40;
+ $mobile_content_padding_top = 30;
+ $mobile_content_padding_right = 30;
+ $mobile_content_padding_left = 30;
+
+ if ( function_exists( 'generate_spacing_get_defaults' ) ) {
+ $spacing_settings = wp_parse_args(
+ get_option( 'generate_spacing_settings', array() ),
+ generate_spacing_get_defaults()
+ );
+
+ $separator = absint( $spacing_settings['separator'] );
+ $content_padding_top = absint( $spacing_settings['content_top'] );
+ $content_padding_right = absint( $spacing_settings['content_right'] );
+ $content_padding_left = absint( $spacing_settings['content_left'] );
+ $mobile_content_padding_top = absint( $spacing_settings['mobile_content_top'] );
+ $mobile_content_padding_right = absint( $spacing_settings['mobile_content_right'] );
+ $mobile_content_padding_left = absint( $spacing_settings['mobile_content_left'] );
+ }
+
+ if ( 'true' == generate_blog_get_masonry() && generate_blog_get_columns() ) {
+ $return .= '.page-header {margin-bottom: ' . $separator . 'px;margin-left: ' . $separator . 'px}';
+ }
+
+ if ( $settings[ 'infinite_scroll' ] && ! is_singular() ) {
+ $return .= '#nav-below {display:none;}';
+ }
+
+ if ( ! $settings['post_image_padding'] && 'post-image-aligned-center' == $settings['post_image_alignment'] && ! is_singular() ) {
+ $return .= '.no-featured-image-padding .post-image {margin-left:-' . $content_padding_left . 'px;margin-right:-' . $content_padding_right . 'px;}';
+ $return .= '.post-image-above-header .no-featured-image-padding .inside-article .post-image {margin-top:-' . $content_padding_top . 'px;}';
+ }
+
+ $location = generate_blog_get_singular_template();
+
+ if ( ! $settings[$location . '_post_image_padding'] && 'center' == $settings[$location . '_post_image_alignment'] && is_singular() ) {
+ $return .= '.no-featured-image-padding .featured-image {margin-left:-' . $content_padding_left . 'px;margin-right:-' . $content_padding_right . 'px;}';
+ $return .= '.post-image-above-header .no-featured-image-padding .inside-article .featured-image {margin-top:-' . $content_padding_top . 'px;}';
+ }
+
+ if ( ! $settings['page_post_image_padding'] || ! $settings['single_post_image_padding'] || ! $settings['post_image_padding'] ) {
+ $return .= '@media ' . generate_premium_get_media_query( 'mobile' ) . '{';
+ if ( ! $settings['post_image_padding'] && 'post-image-aligned-center' == $settings['post_image_alignment'] && ! is_singular() ) {
+ $return .= '.no-featured-image-padding .post-image {margin-left:-' . $mobile_content_padding_left . 'px;margin-right:-' . $mobile_content_padding_right . 'px;}';
+ $return .= '.post-image-above-header .no-featured-image-padding .inside-article .post-image {margin-top:-' . $mobile_content_padding_top . 'px;}';
+ }
+
+ if ( ! $settings[$location . '_post_image_padding'] && 'center' == $settings[$location . '_post_image_alignment'] && is_singular() ) {
+ $return .= '.no-featured-image-padding .featured-image {margin-left:-' . $mobile_content_padding_left . 'px;margin-right:-' . $mobile_content_padding_right . 'px;}';
+ $return .= '.post-image-above-header .no-featured-image-padding .inside-article .featured-image {margin-top:-' . $mobile_content_padding_top . 'px;}';
+ }
+ $return .= '}';
+ }
+
+ $atts = generate_get_blog_image_attributes();
+
+ if ( ! empty( $atts ) ) {
+ $image_width = $atts['width'] && 9999 !== $atts['width'] ? 'width: ' . $atts['width'] . 'px;' : '';
+ $image_height = $atts['height'] && 9999 !== $atts['height'] ? 'height: ' . $atts['height'] . 'px;' : '';
+ $image_crop = $atts['crop'] ? '-o-object-fit: cover;object-fit: cover;' : '';
+
+ if ( ! $image_width && $image_height ) {
+ $image_crop = '-o-object-fit: cover;object-fit: cover;';
+ }
+
+ if ( ! is_singular() ) {
+ $return .= '.resize-featured-image .post-image img {' . $image_width . $image_height . $image_crop . '}';
+ }
+
+ if ( is_single() || is_page() ) {
+ $values = array(
+ $atts['width'],
+ $atts['height'],
+ $atts['crop'],
+ );
+
+ $image_src = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID(), 'full' ), $values );
+
+ if ( $image_src && ( ! $image_src[3] || ! apply_filters( 'generate_use_featured_image_size_match', true ) ) ) {
+ $return .= '.featured-image img {' . $image_width . $image_height . $image_crop . '}';
+ }
+ }
+ }
+
+ return $return;
+ }
+}
+
+if ( ! function_exists( 'generate_blog_excerpt_more' ) ) {
+ add_filter( 'excerpt_more', 'generate_blog_excerpt_more', 15 );
+ /**
+ * Prints the read more HTML
+ */
+ function generate_blog_excerpt_more( $more ) {
+ $generate_settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( '' == $generate_settings['read_more'] ) {
+ return '';
+ }
+
+ return apply_filters(
+ 'generate_excerpt_more_output',
+ sprintf(
+ ' ... %3$s ',
+ the_title_attribute( 'echo=0' ),
+ esc_url( get_permalink( get_the_ID() ) ),
+ wp_kses_post( $generate_settings['read_more'] ),
+ sprintf(
+ /* translators: Aria-label describing the read more button */
+ _x( 'More on %s', 'more on post title', 'gp-premium' ),
+ the_title_attribute( 'echo=0' )
+ )
+ )
+ );
+ }
+}
+
+if ( ! function_exists( 'generate_blog_content_more' ) ) {
+ add_filter( 'the_content_more_link', 'generate_blog_content_more', 15 );
+ /**
+ * Prints the read more HTML
+ */
+ function generate_blog_content_more( $more ) {
+ $generate_settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( '' == $generate_settings['read_more'] ) {
+ return '';
+ }
+
+ return apply_filters(
+ 'generate_content_more_link_output',
+ sprintf(
+ '%3$s
',
+ the_title_attribute( 'echo=0' ),
+ esc_url( get_permalink( get_the_ID() ) . apply_filters( 'generate_more_jump', '#more-' . get_the_ID() ) ),
+ wp_kses_post( $generate_settings['read_more'] ),
+ sprintf(
+ /* translators: Aria-label describing the read more button */
+ _x( 'More on %s', 'more on post title', 'gp-premium' ),
+ the_title_attribute( 'echo=0' )
+ )
+ )
+ );
+ }
+}
+
+/**
+ * Checks the setting and returns false if $thing is disabled
+ *
+ * @since 1.4
+ *
+ * @param String $data The original data, passed through if not disabled
+ * @param String $thing The name of the thing to check
+ * @return String|False The original data, or false (if disabled)
+ */
+function generate_disable_post_thing( $data, $thing ) {
+ $generate_blog_settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( ! $generate_blog_settings[$thing] ) {
+ return false;
+ }
+
+ return $data;
+}
+
+if ( ! function_exists( 'generate_disable_post_date' ) ) {
+ add_filter( 'generate_post_date', 'generate_disable_post_date' );
+ /**
+ * Remove the post date if set
+ *
+ * @since 0.1
+ */
+ function generate_disable_post_date( $date ) {
+ if ( is_singular() ) {
+ return generate_disable_post_thing( $date, 'single_date' );
+ } else {
+ return generate_disable_post_thing( $date, 'date' );
+ }
+ }
+}
+
+if ( ! function_exists( 'generate_disable_post_author' ) ) {
+ add_filter( 'generate_post_author', 'generate_disable_post_author' );
+ /**
+ * Set the author if set
+ *
+ * @since 0.1
+ */
+ function generate_disable_post_author( $author ) {
+ if ( is_singular() ) {
+ return generate_disable_post_thing( $author, 'single_author' );
+ } else {
+ return generate_disable_post_thing( $author, 'author' );
+ }
+ }
+}
+
+if ( ! function_exists( 'generate_disable_post_categories' ) ) {
+ add_filter( 'generate_show_categories', 'generate_disable_post_categories' );
+ /**
+ * Remove the categories if set
+ *
+ * @since 0.1
+ */
+ function generate_disable_post_categories( $categories ) {
+ if ( is_singular() ) {
+ return generate_disable_post_thing( $categories, 'single_categories' );
+ } else {
+ return generate_disable_post_thing( $categories, 'categories' );
+ }
+ }
+}
+
+if ( ! function_exists( 'generate_disable_post_tags' ) ) {
+ add_filter( 'generate_show_tags', 'generate_disable_post_tags' );
+ /**
+ * Remove the tags if set
+ *
+ * @since 0.1
+ */
+ function generate_disable_post_tags( $tags ) {
+ if ( is_singular() ) {
+ return generate_disable_post_thing( $tags, 'single_tags' );
+ } else {
+ return generate_disable_post_thing( $tags, 'tags' );
+ }
+ }
+}
+
+if ( ! function_exists( 'generate_disable_post_comments_link' ) ) {
+ add_filter( 'generate_show_comments', 'generate_disable_post_comments_link' );
+ /**
+ * Remove the link to comments if set
+ *
+ * @since 0.1
+ */
+ function generate_disable_post_comments_link( $comments_link ) {
+ return generate_disable_post_thing( $comments_link, 'comments' );
+ }
+}
+
+add_filter( 'generate_show_post_navigation', 'generate_disable_post_navigation' );
+/**
+ * Remove the single post navigation
+ *
+ * @since 1.5
+ */
+function generate_disable_post_navigation( $navigation ) {
+ if ( is_singular() ) {
+ return generate_disable_post_thing( $navigation, 'single_post_navigation' );
+ } else {
+ return $navigation;
+ }
+}
+
+add_filter( 'generate_excerpt_more_output', 'generate_blog_read_more_button' );
+add_filter( 'generate_content_more_link_output', 'generate_blog_read_more_button' );
+/**
+ * Add the button class to our read more link if set.
+ *
+ * @since 1.5
+ *
+ * @param string $output Our existing read more link.
+ */
+function generate_blog_read_more_button( $output ) {
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( ! $settings['read_more_button'] ) {
+ return $output;
+ }
+
+ return sprintf(
+ '%5$s%3$s
',
+ the_title_attribute( 'echo=0' ),
+ esc_url( get_permalink( get_the_ID() ) . apply_filters( 'generate_more_jump', '#more-' . get_the_ID() ) ),
+ wp_kses_post( $settings['read_more'] ),
+ sprintf(
+ /* translators: Aria-label describing the read more button */
+ _x( 'More on %s', 'more on post title', 'gp-premium' ),
+ the_title_attribute( 'echo=0' )
+ ),
+ 'generate_excerpt_more_output' === current_filter() ? ' ... ' : ''
+ );
+}
+
+if ( ! function_exists( 'generate_blog_load_more' ) ) {
+ add_action( 'generate_after_main_content', 'generate_blog_load_more', 20 );
+ /**
+ * Build our load more button
+ */
+ function generate_blog_load_more() {
+ // Get theme options
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( ( ! $settings[ 'infinite_scroll_button' ] || ! $settings[ 'infinite_scroll' ] ) || is_singular() || is_404() ) {
+ return;
+ }
+
+ global $wp_query;
+
+ if ( $wp_query->max_num_pages < 2 ) {
+ return;
+ }
+
+ if ( is_post_type_archive( 'product' ) ) {
+ return;
+ }
+
+ if ( is_tax( 'product_cat' ) ) {
+ return;
+ }
+
+ $icon = '';
+
+ if ( function_exists( 'generate_get_svg_icon' ) ) {
+ $icon = generate_get_svg_icon( 'spinner' );
+ }
+
+ printf(
+ '',
+ $icon ? 'has-svg-icon' : '',
+ ( 'true' == generate_blog_get_masonry() && generate_blog_get_columns() ) ? 'are-images-unloaded' : '',
+ $icon,
+ wp_kses_post( $settings['masonry_load_more'] )
+ );
+ }
+}
+
+/**
+ * Checks to see whether we're getting page or single post options.
+ *
+ * @since 1.5
+ *
+ * @return string Name of our singular template
+ */
+function generate_blog_get_singular_template() {
+ $template = 'single';
+
+ if ( is_page() ) {
+ $template = 'page';
+ }
+
+ return $template;
+}
+
+add_action( 'generate_after_footer', 'generate_blog_do_infinite_scroll_path', 500 );
+/**
+ * Add a next page of posts link for infinite scroll.
+ *
+ * @since 2.0.0
+ */
+function generate_blog_do_infinite_scroll_path() {
+ if ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) {
+ return;
+ }
+
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( $settings['infinite_scroll'] && ! is_singular() && ! is_404() ) {
+ printf(
+ '%s
',
+ get_next_posts_link()
+ );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/images.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/images.php
new file mode 100644
index 00000000..54f11c71
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/images.php
@@ -0,0 +1,369 @@
+ 'full',
+ );
+
+ foreach ( $sizes as $key => $name ) {
+ $new_sizes[ $name ] = $name;
+ }
+
+ return $new_sizes;
+}
+
+add_filter( 'generate_page_header_default_size', 'generate_blog_set_featured_image_size' );
+/**
+ * Set our featured image sizes.
+ *
+ * @since 1.10.0
+ *
+ * @param string $size The existing size.
+ * @return string The new size.
+ */
+function generate_blog_set_featured_image_size( $size ) {
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( ! is_singular() ) {
+ $size = $settings['post_image_size'];
+ }
+
+ if ( is_single() ) {
+ $size = $settings['single_post_image_size'];
+ }
+
+ if ( is_page() ) {
+ $size = $settings['page_post_image_size'];
+ }
+
+ $atts = generate_get_blog_image_attributes();
+
+ if ( ! empty( $atts ) ) {
+ $values = array(
+ $atts['width'],
+ $atts['height'],
+ $atts['crop'],
+ );
+
+ $image_src = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID(), 'full' ), $values );
+
+ if ( $image_src && $image_src[3] && apply_filters( 'generate_use_featured_image_size_match', true ) ) {
+ return $values;
+ } else {
+ return $size;
+ }
+ }
+
+ return $size;
+}
+
+if ( ! function_exists( 'generate_get_blog_image_attributes' ) ) {
+ /**
+ * Build our image attributes
+ *
+ * @since 0.1
+ */
+ function generate_get_blog_image_attributes() {
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( is_singular() ) {
+ if ( is_singular( 'page' ) ) {
+ $single = 'page_';
+ } else {
+ $single = 'single_';
+ }
+ } else {
+ $single = '';
+ }
+
+ $ignore_crop = array( '', '0', '9999' );
+
+ $atts = array(
+ 'width' => ( in_array( $settings[ "{$single}post_image_width" ], $ignore_crop ) ) ? 9999 : absint( $settings[ "{$single}post_image_width" ] ),
+ 'height' => ( in_array( $settings[ "{$single}post_image_height" ], $ignore_crop ) ) ? 9999 : absint( $settings[ "{$single}post_image_height" ] ),
+ 'crop' => ( in_array( $settings[ "{$single}post_image_width" ], $ignore_crop ) || in_array( $settings[ "{$single}post_image_height" ], $ignore_crop ) ) ? false : true,
+ );
+
+ // If there's no height or width, empty the array.
+ if ( 9999 == $atts['width'] && 9999 == $atts['height'] ) { // phpcs:ignore
+ $atts = array();
+ }
+
+ return apply_filters( 'generate_blog_image_attributes', $atts );
+ }
+}
+
+if ( ! function_exists( 'generate_blog_setup' ) ) {
+ add_action( 'wp', 'generate_blog_setup', 50 );
+ /**
+ * Setup our blog functions and actions
+ *
+ * @since 0.1
+ */
+ function generate_blog_setup() {
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ // Move our featured images to above the title.
+ if ( 'post-image-above-header' === $settings['post_image_position'] ) {
+ remove_action( 'generate_after_entry_header', 'generate_post_image' );
+ add_action( 'generate_before_content', 'generate_post_image' );
+
+ // If we're using the Page Header add-on, move those as well.
+ if ( function_exists( 'generate_page_header_post_image' ) ) {
+ remove_action( 'generate_after_entry_header', 'generate_page_header_post_image' );
+ add_action( 'generate_before_content', 'generate_page_header_post_image' );
+ }
+ }
+
+ $page_header_content = false;
+ if ( function_exists( 'generate_page_header_get_options' ) ) {
+ $options = generate_page_header_get_options();
+
+ if ( $options && '' !== $options['content'] ) {
+ $page_header_content = true;
+ }
+
+ // If our Page Header has no content, remove it.
+ // This will allow the Blog add-on to add an image for us.
+ if ( ! $page_header_content && is_singular() ) {
+ remove_action( 'generate_before_content', 'generate_page_header' );
+ remove_action( 'generate_after_entry_header', 'generate_page_header' );
+ remove_action( 'generate_after_header', 'generate_page_header' );
+ }
+ }
+
+ // Remove the core theme featured image.
+ // I would like to filter instead one day.
+ remove_action( 'generate_after_header', 'generate_featured_page_header' );
+ remove_action( 'generate_before_content', 'generate_featured_page_header_inside_single' );
+
+ $location = generate_blog_get_singular_template();
+
+ if ( $settings[ $location . '_post_image' ] && is_singular() && ! $page_header_content ) {
+ if ( 'below-title' === $settings[ $location . '_post_image_position' ] ) {
+ add_action( 'generate_after_entry_header', 'generate_blog_single_featured_image' );
+ }
+
+ if ( 'inside-content' === $settings[ $location . '_post_image_position' ] ) {
+ add_action( 'generate_before_content', 'generate_blog_single_featured_image' );
+ }
+
+ if ( 'above-content' === $settings[ $location . '_post_image_position' ] ) {
+ add_action( 'generate_after_header', 'generate_blog_single_featured_image' );
+ }
+ }
+ }
+}
+
+add_filter( 'generate_featured_image_output', 'generate_blog_featured_image' );
+/**
+ * Remove featured image if set or using WooCommerce.
+ *
+ * @since 1.5
+ * @param string $output The existing output.
+ * @return string The image HTML
+ */
+function generate_blog_featured_image( $output ) {
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) || ! $settings['post_image'] ) {
+ return false;
+ }
+
+ return $output;
+}
+
+/**
+ * Build our featured images for single posts and pages.
+ *
+ * This function is way more complicated than it could be so it can
+ * ensure compatibility with the Page Header add-on.
+ *
+ * @since 1.5
+ *
+ * @return string The image HTML
+ */
+function generate_blog_single_featured_image() {
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ $image_id = get_post_thumbnail_id( get_the_ID(), 'full' );
+
+ if ( function_exists( 'generate_page_header_get_image' ) && generate_page_header_get_image( 'ID' ) ) {
+ if ( intval( $image_id ) !== generate_page_header_get_image( 'ID' ) ) {
+ $image_id = generate_page_header_get_image( 'ID' );
+ }
+ }
+
+ $location = generate_blog_get_singular_template();
+
+ if ( ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) || ! $settings[ $location . '_post_image' ] || ! $image_id ) {
+ return false;
+ }
+
+ $attrs = array(
+ 'itemprop' => 'image',
+ );
+
+ if ( function_exists( 'generate_get_schema_type' ) ) {
+ if ( 'microdata' !== generate_get_schema_type() ) {
+ $attrs = array();
+ }
+ }
+
+ $attrs['loading'] = false;
+ $attrs = apply_filters( 'generate_single_featured_image_attrs', $attrs );
+
+ $image_html = apply_filters(
+ 'post_thumbnail_html', // phpcs:ignore -- Core filter.
+ wp_get_attachment_image(
+ $image_id,
+ apply_filters( 'generate_page_header_default_size', 'full' ),
+ '',
+ $attrs
+ ),
+ get_the_ID(),
+ $image_id,
+ apply_filters( 'generate_page_header_default_size', 'full' ),
+ ''
+ );
+
+ $location = generate_blog_get_singular_template();
+
+ $classes = array(
+ is_page() ? 'page-header-image' : null,
+ is_singular() && ! is_page() ? 'page-header-image-single' : null,
+ 'above-content' === $settings[ $location . '_post_image_position' ] ? 'grid-container grid-parent' : null,
+ );
+
+ $image_html = apply_filters( 'generate_single_featured_image_html', $image_html );
+
+ // phpcs:ignore -- No need to escape here.
+ echo apply_filters(
+ 'generate_single_featured_image_output',
+ sprintf(
+ '
+ %1$s
+
',
+ $image_html,
+ implode( ' ', $classes )
+ ),
+ $image_html
+ );
+}
+
+add_filter( 'generate_blog_image_attributes', 'generate_blog_page_header_image_atts' );
+/**
+ * Filter our image attributes in case we're using differents atts in our Page Header
+ *
+ * @since 1.5
+ *
+ * @param array $atts Our existing image attributes.
+ * @return array Image attributes
+ */
+function generate_blog_page_header_image_atts( $atts ) {
+ if ( ! function_exists( 'generate_page_header_get_options' ) ) {
+ return $atts;
+ }
+
+ if ( ! is_singular() ) {
+ return $atts;
+ }
+
+ $options = generate_page_header_get_options();
+
+ if ( $options && 'enable' === $options['image_resize'] ) {
+ $ignore_crop = array( '', '0', '9999' );
+
+ $atts = array(
+ 'width' => ( in_array( $options['image_width'], $ignore_crop ) ) ? 9999 : absint( $options['image_width'] ),
+ 'height' => ( in_array( $options['image_height'], $ignore_crop ) ) ? 9999 : absint( $options['image_height'] ),
+ 'crop' => ( in_array( $options['image_width'], $ignore_crop ) || in_array( $options['image_height'], $ignore_crop ) ) ? false : true,
+ );
+ }
+
+ return $atts;
+}
+
+add_filter( 'generate_single_featured_image_html', 'generate_blog_page_header_link' );
+/**
+ * Add our Page Header link to our featured image if set.
+ *
+ * @since 1.5
+ *
+ * @param string $image_html Our existing image HTML.
+ * @return string Our new image HTML.
+ */
+function generate_blog_page_header_link( $image_html ) {
+ if ( ! function_exists( 'generate_page_header_get_options' ) ) {
+ return $image_html;
+ }
+
+ $options = generate_page_header_get_options();
+
+ if ( ! empty( $options['image_link'] ) ) {
+ return '' . $image_html . ' ';
+ } else {
+ return $image_html;
+ }
+}
+
+add_filter( 'body_class', 'generate_blog_remove_featured_image_class', 20 );
+/**
+ * Remove the featured image classes if they're disabled.
+ *
+ * @since 2.1.0
+ * @param array $classes The body classes.
+ */
+function generate_blog_remove_featured_image_class( $classes ) {
+ if ( is_singular() ) {
+ $settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ generate_blog_get_defaults()
+ );
+
+ if ( is_single() ) {
+ $disable_single_featured_image = ! $settings['single_post_image'];
+ $classes = generate_premium_remove_featured_image_class( $classes, $disable_single_featured_image );
+ }
+
+ if ( is_page() && ! $settings['page_post_image'] ) {
+ $disable_page_featured_image = ! $settings['page_post_image'];
+ $classes = generate_premium_remove_featured_image_class( $classes, $disable_page_featured_image );
+ }
+ }
+
+ return $classes;
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/controls.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/controls.js
new file mode 100644
index 00000000..eb397ff9
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/controls.js
@@ -0,0 +1,98 @@
+jQuery( function( $ ) {
+ // Featured image controls
+ var featuredImageArchiveControls = [
+ 'generate_blog_settings-post_image',
+ 'generate_blog_settings-post_image_padding',
+ 'generate_blog_settings-post_image_position',
+ 'generate_blog_settings-post_image_alignment',
+ 'generate_blog_settings-post_image_size',
+ 'generate_blog_settings-post_image_width',
+ 'generate_blog_settings-post_image_height',
+ 'generate_regenerate_images_notice',
+ ];
+
+ $.each( featuredImageArchiveControls, function( index, value ) {
+ $( '#customize-control-' + value ).attr( 'data-control-section', 'featured-image-archives' );
+ } );
+
+ var featuredImageSingleControls = [
+ 'generate_blog_settings-single_post_image',
+ 'generate_blog_settings-single_post_image_padding',
+ 'generate_blog_settings-single_post_image_position',
+ 'generate_blog_settings-single_post_image_alignment',
+ 'generate_blog_settings-single_post_image_size',
+ 'generate_blog_settings-single_post_image_width',
+ 'generate_blog_settings-single_post_image_height',
+ 'generate_regenerate_single_post_images_notice',
+ ];
+
+ $.each( featuredImageSingleControls, function( index, value ) {
+ $( '#customize-control-' + value ).attr( 'data-control-section', 'featured-image-single' ).css( {
+ visibility: 'hidden',
+ height: '0',
+ width: '0',
+ margin: '0',
+ overflow: 'hidden',
+ } );
+ } );
+
+ var featuredImagePageControls = [
+ 'generate_blog_settings-page_post_image',
+ 'generate_blog_settings-page_post_image_padding',
+ 'generate_blog_settings-page_post_image_position',
+ 'generate_blog_settings-page_post_image_alignment',
+ 'generate_blog_settings-page_post_image_size',
+ 'generate_blog_settings-page_post_image_width',
+ 'generate_blog_settings-page_post_image_height',
+ 'generate_regenerate_page_images_notice',
+ ];
+
+ $.each( featuredImagePageControls, function( index, value ) {
+ $( '#customize-control-' + value ).attr( 'data-control-section', 'featured-image-page' ).css( {
+ visibility: 'hidden',
+ height: '0',
+ width: '0',
+ margin: '0',
+ overflow: 'hidden',
+ } );
+ } );
+
+ // Post meta controls
+ var postMetaArchiveControls = [
+ 'generate_settings-post_content',
+ 'generate_blog_settings-excerpt_length',
+ 'generate_blog_settings-read_more',
+ 'generate_blog_settings-read_more_button',
+ 'generate_blog_settings-date',
+ 'generate_blog_settings-author',
+ 'generate_blog_settings-categories',
+ 'generate_blog_settings-tags',
+ 'generate_blog_settings-comments',
+ 'generate_blog_settings-infinite_scroll',
+ 'generate_blog_settings-infinite_scroll_button',
+ 'blog_masonry_load_more_control',
+ 'blog_masonry_loading_control',
+ ];
+
+ $.each( postMetaArchiveControls, function( index, value ) {
+ $( '#customize-control-' + value ).attr( 'data-control-section', 'post-meta-archives' );
+ } );
+
+ var postMetaSingleControls = [
+ 'generate_blog_settings-single_date',
+ 'generate_blog_settings-single_author',
+ 'generate_blog_settings-single_categories',
+ 'generate_blog_settings-single_tags',
+ 'generate_blog_settings-single_post_navigation',
+ ];
+
+ $.each( postMetaSingleControls, function( index, value ) {
+ $( '#customize-control-' + value ).attr( 'data-control-section', 'post-meta-single' ).css( {
+ visibility: 'hidden',
+ height: '0',
+ width: '0',
+ margin: '0',
+ overflow: 'hidden',
+ } );
+ } );
+} );
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/customizer.js
new file mode 100644
index 00000000..f3c6656c
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/customizer.js
@@ -0,0 +1,76 @@
+/**
+ * Theme Customizer enhancements for a better user experience.
+ *
+ * Contains handlers to make Theme Customizer preview reload changes asynchronously.
+ */
+
+( function( $ ) {
+ // Container width
+ wp.customize( 'generate_settings[container_width]', function( value ) {
+ value.bind( function() {
+ if ( $( '.masonry-container' )[ 0 ] ) {
+ jQuery( '.masonry-container' ).imagesLoaded( function() {
+ $container = jQuery( '.masonry-container' );
+ if ( jQuery( $container ).length ) {
+ $container.masonry( {
+ columnWidth: '.grid-sizer',
+ itemSelector: '.masonry-post',
+ stamp: '.page-header',
+ } );
+ }
+ } );
+ }
+ } );
+ } );
+
+ $( 'body' ).on( 'generate_spacing_updated', function() {
+ if ( $( '.masonry-container' )[ 0 ] ) {
+ jQuery( '.masonry-container' ).imagesLoaded( function() {
+ $container = jQuery( '.masonry-container' );
+ if ( jQuery( $container ).length ) {
+ $container.masonry( {
+ columnWidth: '.grid-sizer',
+ itemSelector: '.masonry-post',
+ stamp: '.page-header',
+ } );
+ }
+ } );
+ }
+ } );
+
+ /**
+ * The first infinite scroll load in the Customizer misses article classes if they've been
+ * added or removed in the previous refresh.
+ *
+ * This is totally hacky, but I'm just happy I finally got it working!
+ */
+ var $container = $( '.infinite-scroll-item' ).first().parent();
+ $container.on( 'load.infiniteScroll', function( event, response ) {
+ var $posts = $( response ).find( 'article' );
+ if ( wp.customize.value( 'generate_blog_settings[column_layout]' )() ) {
+ $posts.addClass( 'generate-columns' );
+ $posts.addClass( 'grid-parent' );
+ $posts.addClass( 'grid-' + wp.customize.value( 'generate_blog_settings[columns]' )() );
+ $posts.addClass( 'tablet-grid-50' );
+ $posts.addClass( 'mobile-grid-100' );
+ } else {
+ $posts.removeClass( 'generate-columns' );
+ $posts.removeClass( 'grid-parent' );
+ $posts.removeClass( 'grid-' + wp.customize.value( 'generate_blog_settings[columns]' )() );
+ $posts.removeClass( 'tablet-grid-50' );
+ $posts.removeClass( 'mobile-grid-100' );
+ }
+
+ if ( wp.customize.value( 'generate_blog_settings[masonry]' )() ) {
+ $posts.addClass( 'masonry-post' );
+ } else {
+ $posts.removeClass( 'masonry-post' );
+ }
+
+ if ( ! wp.customize.value( 'generate_blog_settings[post_image_padding]' )() ) {
+ $posts.addClass( 'no-featured-image-padding' );
+ } else {
+ $posts.removeClass( 'no-featured-image-padding' );
+ }
+ } );
+}( jQuery ) );
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/infinite-scroll.pkgd.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/infinite-scroll.pkgd.min.js
new file mode 100644
index 00000000..329c20c6
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/infinite-scroll.pkgd.min.js
@@ -0,0 +1,12 @@
+/*!
+ * Infinite Scroll PACKAGED v3.0.6
+ * Automatically add next page
+ *
+ * Licensed GPLv3 for open source use
+ * or Infinite Scroll Commercial License for commercial use
+ *
+ * https://infinite-scroll.com
+ * Copyright 2018 Metafizzy
+ */
+
+!function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,r,l){function a(t,e,n){var o,r="$()."+i+'("'+e+'")';return t.each(function(t,a){var h=l.data(a,i);if(!h)return void s(i+" not initialized. Cannot call methods, i.e. "+r);var c=h[e];if(!c||"_"==e.charAt(0))return void s(r+" is not a valid method");var u=c.apply(h,n);o=void 0===o?u:o}),void 0!==o?o:t}function h(t,e){t.each(function(t,n){var o=l.data(n,i);o?(o.option(e),o._init()):(o=new r(n,e),l.data(n,i,o))})}l=l||e||t.jQuery,l&&(r.prototype.option||(r.prototype.option=function(t){l.isPlainObject(t)&&(this.options=l.extend(!0,this.options,t))}),l.fn[i]=function(t){if("string"==typeof t){var e=o.call(arguments,1);return a(this,t,e)}return h(this,t),this},n(l))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,r=t.console,s="undefined"==typeof r?function(){}:function(t){r.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return n.indexOf(e)==-1&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return n!=-1&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],o=0;o=0,this.isPrefilling?(this.log("prefill"),this.loadNextPage()):this.stopPrefill()},s.getPrefillDistance=function(){return this.options.elementScroll?this.scroller.clientHeight-this.scroller.scrollHeight:this.windowHeight-this.element.clientHeight},s.stopPrefill=function(){this.log("stopPrefill"),this.off("append",this.prefill)},e}),function(t,e){"function"==typeof define&&define.amd?define("infinite-scroll/js/scroll-watch",["./core","fizzy-ui-utils/utils"],function(i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,function(t,e,i){var n=e.prototype;return e.defaults.scrollThreshold=400,e.create.scrollWatch=function(){this.pageScrollHandler=this.onPageScroll.bind(this),this.resizeHandler=this.onResize.bind(this);var t=this.options.scrollThreshold,e=t||0===t;e&&this.enableScrollWatch()},e.destroy.scrollWatch=function(){this.disableScrollWatch()},n.enableScrollWatch=function(){this.isScrollWatching||(this.isScrollWatching=!0,this.updateMeasurements(),this.updateScroller(),this.on("last",this.disableScrollWatch),this.bindScrollWatchEvents(!0))},n.disableScrollWatch=function(){this.isScrollWatching&&(this.bindScrollWatchEvents(!1),delete this.isScrollWatching)},n.bindScrollWatchEvents=function(e){var i=e?"addEventListener":"removeEventListener";this.scroller[i]("scroll",this.pageScrollHandler),t[i]("resize",this.resizeHandler)},n.onPageScroll=e.throttle(function(){var t=this.getBottomDistance();t<=this.options.scrollThreshold&&this.dispatchEvent("scrollThreshold")}),n.getBottomDistance=function(){return this.options.elementScroll?this.getElementBottomDistance():this.getWindowBottomDistance()},n.getWindowBottomDistance=function(){var e=this.top+this.element.clientHeight,i=t.pageYOffset+this.windowHeight;return e-i},n.getElementBottomDistance=function(){var t=this.scroller.scrollHeight,e=this.scroller.scrollTop+this.scroller.clientHeight;return t-e},n.onResize=function(){this.updateMeasurements()},i.debounceMethod(e,"onResize",150),e}),function(t,e){"function"==typeof define&&define.amd?define("infinite-scroll/js/history",["./core","fizzy-ui-utils/utils"],function(i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,function(t,e,i){var n=e.prototype;e.defaults.history="replace";var o=document.createElement("a");return e.create.history=function(){if(this.options.history){o.href=this.getAbsolutePath();var t=o.origin||o.protocol+"//"+o.host,e=t==location.origin;return e?void(this.options.append?this.createHistoryAppend():this.createHistoryPageLoad()):void console.error("[InfiniteScroll] cannot set history with different origin: "+o.origin+" on "+location.origin+" . History behavior disabled.")}},n.createHistoryAppend=function(){this.updateMeasurements(),this.updateScroller(),this.scrollPages=[{top:0,path:location.href,title:document.title}],this.scrollPageIndex=0,this.scrollHistoryHandler=this.onScrollHistory.bind(this),this.unloadHandler=this.onUnload.bind(this),this.scroller.addEventListener("scroll",this.scrollHistoryHandler),this.on("append",this.onAppendHistory),this.bindHistoryAppendEvents(!0)},n.bindHistoryAppendEvents=function(e){var i=e?"addEventListener":"removeEventListener";this.scroller[i]("scroll",this.scrollHistoryHandler),t[i]("unload",this.unloadHandler)},n.createHistoryPageLoad=function(){this.on("load",this.onPageLoadHistory)},e.destroy.history=n.destroyHistory=function(){var t=this.options.history&&this.options.append;t&&this.bindHistoryAppendEvents(!1)},n.onAppendHistory=function(t,e,i){if(i&&i.length){var n=i[0],r=this.getElementScrollY(n);o.href=e,this.scrollPages.push({top:r,path:o.href,title:t.title})}},n.getElementScrollY=function(t){return this.options.elementScroll?this.getElementElementScrollY(t):this.getElementWindowScrollY(t)},n.getElementWindowScrollY=function(e){var i=e.getBoundingClientRect();return i.top+t.pageYOffset},n.getElementElementScrollY=function(t){return t.offsetTop-this.top},n.onScrollHistory=function(){for(var t,e,i=this.getScrollViewY(),n=0;n=i)break;t=n,e=o}t!=this.scrollPageIndex&&(this.scrollPageIndex=t,this.setHistory(e.title,e.path))},i.debounceMethod(e,"onScrollHistory",150),n.getScrollViewY=function(){return this.options.elementScroll?this.scroller.scrollTop+this.scroller.clientHeight/2:t.pageYOffset+this.windowHeight/2},n.setHistory=function(t,e){var i=this.options.history,n=i&&history[i+"State"];n&&(history[i+"State"](null,t,e),this.options.historyTitle&&(document.title=t),this.dispatchEvent("history",null,[t,e]))},n.onUnload=function(){var e=this.scrollPageIndex;if(0!==e){var i=this.scrollPages[e],n=t.pageYOffset-i.top+this.top;this.destroyHistory(),scrollTo(0,n)}},n.onPageLoadHistory=function(t,e){this.setHistory(t.title,e)},e}),function(t,e){"function"==typeof define&&define.amd?define("infinite-scroll/js/button",["./core","fizzy-ui-utils/utils"],function(i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,function(t,e,i){function n(t,e){this.element=t,this.infScroll=e,this.clickHandler=this.onClick.bind(this),this.element.addEventListener("click",this.clickHandler),e.on("request",this.disable.bind(this)),e.on("load",this.enable.bind(this)),e.on("error",this.hide.bind(this)),e.on("last",this.hide.bind(this))}return e.create.button=function(){var t=i.getQueryElement(this.options.button);if(t)return void(this.button=new n(t,this))},e.destroy.button=function(){this.button&&this.button.destroy()},n.prototype.onClick=function(t){t.preventDefault(),this.infScroll.loadNextPage()},n.prototype.enable=function(){this.element.removeAttribute("disabled")},n.prototype.disable=function(){this.element.disabled="disabled"},n.prototype.hide=function(){this.element.style.display="none"},n.prototype.destroy=function(){this.element.removeEventListener("click",this.clickHandler)},e.Button=n,e}),function(t,e){"function"==typeof define&&define.amd?define("infinite-scroll/js/status",["./core","fizzy-ui-utils/utils"],function(i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,function(t,e,i){function n(t){r(t,"none")}function o(t){r(t,"block")}function r(t,e){t&&(t.style.display=e)}var s=e.prototype;return e.create.status=function(){var t=i.getQueryElement(this.options.status);t&&(this.statusElement=t,this.statusEventElements={request:t.querySelector(".infinite-scroll-request"),error:t.querySelector(".infinite-scroll-error"),last:t.querySelector(".infinite-scroll-last")},this.on("request",this.showRequestStatus),this.on("error",this.showErrorStatus),this.on("last",this.showLastStatus),this.bindHideStatus("on"))},s.bindHideStatus=function(t){var e=this.options.append?"append":"load";this[t](e,this.hideAllStatus)},s.showRequestStatus=function(){this.showStatus("request")},s.showErrorStatus=function(){this.showStatus("error")},s.showLastStatus=function(){this.showStatus("last"),this.bindHideStatus("off")},s.showStatus=function(t){o(this.statusElement),this.hideStatusEventElements();var e=this.statusEventElements[t];o(e)},s.hideAllStatus=function(){n(this.statusElement),this.hideStatusEventElements()},s.hideStatusEventElements=function(){for(var t in this.statusEventElements){var e=this.statusEventElements[t];n(e)}},e}),function(t,e){"function"==typeof define&&define.amd?define(["infinite-scroll/js/core","infinite-scroll/js/page-load","infinite-scroll/js/scroll-watch","infinite-scroll/js/history","infinite-scroll/js/button","infinite-scroll/js/status"],e):"object"==typeof module&&module.exports&&(module.exports=e(require("./core"),require("./page-load"),require("./scroll-watch"),require("./history"),require("./button"),require("./status")))}(window,function(t){return t}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("imagesloaded/imagesloaded",["ev-emitter/ev-emitter"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}("undefined"!=typeof window?window:this,function(t,e){function i(t,e){for(var i in e)t[i]=e[i];return t}function n(t){if(Array.isArray(t))return t;var e="object"==typeof t&&"number"==typeof t.length;return e?h.call(t):[t]}function o(t,e,r){if(!(this instanceof o))return new o(t,e,r);var s=t;return"string"==typeof t&&(s=document.querySelectorAll(t)),s?(this.elements=n(s),this.options=i({},this.options),"function"==typeof e?r=e:i(this.options,e),r&&this.on("always",r),this.getImages(),l&&(this.jqDeferred=new l.Deferred),void setTimeout(this.check.bind(this))):void a.error("Bad element for imagesLoaded "+(s||t))}function r(t){this.img=t}function s(t,e){this.url=t,this.element=e,this.img=new Image}var l=t.jQuery,a=t.console,h=Array.prototype.slice;o.prototype=Object.create(e.prototype),o.prototype.options={},o.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},o.prototype.addElementImages=function(t){"IMG"==t.nodeName&&this.addImage(t),this.options.background===!0&&this.addElementBackgroundImages(t);var e=t.nodeType;if(e&&c[e]){for(var i=t.querySelectorAll("img"),n=0;n 'false',
+ 'masonry_width' => 'width2',
+ 'masonry_most_recent_width' => 'width4',
+ 'post_image' => 'true',
+ 'date' => 'true',
+ 'author' => 'true',
+ 'categories' => 'true',
+ 'tags' => 'true',
+ 'comments' => 'true',
+ );
+
+ // Get our spacing settings
+ $blog_settings = wp_parse_args(
+ get_option( 'generate_blog_settings', array() ),
+ $defaults
+ );
+
+ $new_settings = array();
+
+ // These options use to be a select input with false + true values
+ // This will make the false values empty so the options can be checkboxes
+ $keys = array( 'date', 'author', 'categories', 'tags', 'comments', 'masonry', 'post_image' );
+ foreach ( $keys as $key ) {
+ if ( is_string( $blog_settings[ $key ] ) ) {
+ if ( 'false' == $blog_settings[ $key ] ) {
+ $new_settings[ $key ] = false;
+ } elseif ( 'true' == $blog_settings[ $key ] ) {
+ $new_settings[ $key ] = true;
+ }
+ }
+ }
+
+ // Set the single post meta options to whatever the blog options are
+ $new_settings[ 'single_date' ] = isset( $new_settings[ 'date' ] ) ? $new_settings[ 'date' ] : true;
+ $new_settings[ 'single_author' ] = isset( $new_settings[ 'author' ] ) ? $new_settings[ 'author' ] : true;
+ $new_settings[ 'single_categories' ] = isset( $new_settings[ 'categories' ] ) ? $new_settings[ 'categories' ] : true;
+ $new_settings[ 'single_tags' ] = isset( $new_settings[ 'tags' ] ) ? $new_settings[ 'tags' ] : true;
+
+ if ( isset( $new_settings[ 'masonry' ] ) && $new_settings[ 'masonry' ] ) {
+ $new_settings[ 'column_layout' ] = true;
+ $new_settings[ 'infinite_scroll' ] = true;
+ $new_settings[ 'infinite_scroll_button' ] = true;
+
+ if ( 'width2' == $blog_settings['masonry_width'] ) {
+ $new_settings[ 'columns' ] = '33';
+ }
+
+ if ( 'width4' == $blog_settings['masonry_width'] ) {
+ $new_settings[ 'columns' ] = '50';
+ }
+
+ if ( 'width6' == $blog_settings['masonry_width'] ) {
+ $new_settings[ 'columns' ] = '100';
+ }
+
+ if ( 'width2' == $blog_settings[ 'masonry_width' ] ) {
+ if ( 'width2' !== $blog_settings[ 'masonry_most_recent_width' ] ) {
+ $new_settings[ 'featured_column' ] = true;
+ } else {
+ $new_settings[ 'featured_column' ] = false;
+ }
+ }
+
+ if ( 'width4' == $blog_settings[ 'masonry_width' ] ) {
+ if ( 'width6' == $blog_settings[ 'masonry_most_recent_width' ] ) {
+ $new_settings[ 'featured_column' ] = true;
+ } else {
+ $new_settings[ 'featured_column' ] = false;
+ }
+ }
+
+ if ( 'width6' == $blog_settings[ 'masonry_width' ] ) {
+ $new_settings[ 'featured_column' ] = false;
+ }
+ }
+
+ if ( function_exists( 'generate_page_header_get_defaults' ) ) {
+ $page_header_settings = wp_parse_args(
+ get_option( 'generate_page_header_settings', array() ),
+ generate_page_header_get_defaults()
+ );
+
+ if ( 'hide' == $page_header_settings[ 'post_header_position' ] ) {
+ $new_settings[ 'single_post_image' ] = false;
+ } else {
+ $new_settings[ 'single_post_image_position' ] = $page_header_settings[ 'post_header_position' ];
+ }
+
+ $new_settings[ 'page_post_image_position' ] = $page_header_settings[ 'page_header_position' ];
+ }
+
+ unset( $blog_settings['masonry_width'] );
+ unset( $blog_settings['masonry_most_recent_width'] );
+
+ $update_settings = wp_parse_args( $new_settings, $blog_settings );
+ update_option( 'generate_blog_settings', $update_settings );
+
+ // Update our migration option so we don't need to run this again
+ $updated[ 'blog_visibility_updated' ] = 'true';
+ $migration_settings = wp_parse_args( $updated, $settings );
+ update_option( 'generate_migration_settings', $migration_settings );
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/generate-blog.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/generate-blog.php
new file mode 100644
index 00000000..49fd37fd
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/generate-blog.php
@@ -0,0 +1,20 @@
+register_control_type( 'GeneratePress_Alpha_Color_Customize_Control' );
+ $wp_customize->register_control_type( 'GeneratePress_Title_Customize_Control' );
+ $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' );
+ }
+
+ // Get our palettes.
+ $palettes = generate_get_default_color_palettes();
+
+ // Add our Colors panel.
+ if ( class_exists( 'WP_Customize_Panel' ) ) {
+ $wp_customize->add_panel(
+ 'generate_colors_panel',
+ array(
+ 'priority' => 30,
+ 'theme_supports' => '',
+ 'title' => __( 'Colors', 'gp-premium' ),
+ 'description' => '',
+ )
+ );
+ }
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_body_color_shortcuts',
+ array(
+ 'section' => 'body_section',
+ 'element' => __( 'Body', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'typography' => 'font_section',
+ 'backgrounds' => 'generate_backgrounds_body',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ // Add Top Bar Colors section.
+ if ( isset( $defaults['top_bar_background_color'] ) && function_exists( 'generate_is_top_bar_active' ) ) {
+ $wp_customize->add_section(
+ 'generate_top_bar_colors',
+ array(
+ 'title' => __( 'Top Bar', 'gp-premium' ),
+ 'priority' => 40,
+ 'panel' => 'generate_colors_panel',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[top_bar_background_color]',
+ array(
+ 'default' => $defaults['top_bar_background_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[top_bar_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'generate_top_bar_colors',
+ 'settings' => 'generate_settings[top_bar_background_color]',
+ 'palette' => $palettes,
+ 'show_opacity' => true,
+ 'priority' => 1,
+ 'active_callback' => 'generate_is_top_bar_active',
+ )
+ )
+ );
+
+ // Add color settings.
+ $top_bar_colors = array();
+ $top_bar_colors[] = array(
+ 'slug' => 'top_bar_text_color',
+ 'default' => $defaults['top_bar_text_color'],
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'priority' => 2,
+ );
+ $top_bar_colors[] = array(
+ 'slug' => 'top_bar_link_color',
+ 'default' => $defaults['top_bar_link_color'],
+ 'label' => __( 'Link', 'gp-premium' ),
+ 'priority' => 3,
+ );
+ $top_bar_colors[] = array(
+ 'slug' => 'top_bar_link_color_hover',
+ 'default' => $defaults['top_bar_link_color_hover'],
+ 'label' => __( 'Link Hover', 'gp-premium' ),
+ 'priority' => 4,
+ );
+
+ foreach ( $top_bar_colors as $color ) {
+ $wp_customize->add_setting(
+ 'generate_settings[' . $color['slug'] . ']',
+ array(
+ 'default' => $color['default'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ $color['slug'],
+ array(
+ 'label' => $color['label'],
+ 'section' => 'generate_top_bar_colors',
+ 'settings' => 'generate_settings[' . $color['slug'] . ']',
+ 'priority' => $color['priority'],
+ 'palette' => $palettes,
+ 'active_callback' => 'generate_is_top_bar_active',
+ )
+ )
+ );
+ }
+ }
+
+ // Add Header Colors section.
+ $wp_customize->add_section(
+ 'header_color_section',
+ array(
+ 'title' => __( 'Header', 'gp-premium' ),
+ 'priority' => 50,
+ 'panel' => 'generate_colors_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_header_color_shortcuts',
+ array(
+ 'section' => 'header_color_section',
+ 'element' => __( 'Header', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'generate_layout_header',
+ 'typography' => 'font_header_section',
+ 'backgrounds' => 'generate_backgrounds_header',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[header_background_color]',
+ array(
+ 'default' => $defaults['header_background_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[header_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'header_color_section',
+ 'settings' => 'generate_settings[header_background_color]',
+ 'palette' => $palettes,
+ 'show_opacity' => true,
+ 'priority' => 1,
+ )
+ )
+ );
+
+ // Add color settings.
+ $header_colors = array();
+ $header_colors[] = array(
+ 'slug' => 'header_text_color',
+ 'default' => $defaults['header_text_color'],
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'priority' => 2,
+ );
+ $header_colors[] = array(
+ 'slug' => 'header_link_color',
+ 'default' => $defaults['header_link_color'],
+ 'label' => __( 'Link', 'gp-premium' ),
+ 'priority' => 3,
+ );
+ $header_colors[] = array(
+ 'slug' => 'header_link_hover_color',
+ 'default' => $defaults['header_link_hover_color'],
+ 'label' => __( 'Link Hover', 'gp-premium' ),
+ 'priority' => 4,
+ );
+ $header_colors[] = array(
+ 'slug' => 'site_title_color',
+ 'default' => $defaults['site_title_color'],
+ 'label' => __( 'Site Title', 'gp-premium' ),
+ 'priority' => 5,
+ );
+ $header_colors[] = array(
+ 'slug' => 'site_tagline_color',
+ 'default' => $defaults['site_tagline_color'],
+ 'label' => __( 'Tagline', 'gp-premium' ),
+ 'priority' => 6,
+ );
+
+ foreach ( $header_colors as $color ) {
+ $wp_customize->add_setting(
+ 'generate_settings[' . $color['slug'] . ']',
+ array(
+ 'default' => $color['default'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ $color['slug'],
+ array(
+ 'label' => $color['label'],
+ 'section' => 'header_color_section',
+ 'settings' => 'generate_settings[' . $color['slug'] . ']',
+ 'priority' => $color['priority'],
+ 'palette' => $palettes,
+ )
+ )
+ );
+ }
+
+ // Add Navigation section.
+ $wp_customize->add_section(
+ 'navigation_color_section',
+ array(
+ 'title' => __( 'Primary Navigation', 'gp-premium' ),
+ 'priority' => 60,
+ 'panel' => 'generate_colors_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_primary_navigation_color_shortcuts',
+ array(
+ 'section' => 'navigation_color_section',
+ 'element' => __( 'Primary Navigation', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'generate_layout_navigation',
+ 'typography' => 'font_navigation_section',
+ 'backgrounds' => 'generate_backgrounds_navigation',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 0,
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_primary_navigation_parent_items',
+ array(
+ 'section' => 'navigation_color_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Parent Items', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[navigation_background_color]',
+ array(
+ 'default' => $defaults['navigation_background_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[navigation_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'navigation_color_section',
+ 'settings' => 'generate_settings[navigation_background_color]',
+ 'palette' => $palettes,
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[navigation_background_hover_color]',
+ array(
+ 'default' => $defaults['navigation_background_hover_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[navigation_background_hover_color]',
+ array(
+ 'label' => __( 'Background Hover', 'gp-premium' ),
+ 'section' => 'navigation_color_section',
+ 'settings' => 'generate_settings[navigation_background_hover_color]',
+ 'palette' => $palettes,
+ 'priority' => 3,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[navigation_background_current_color]',
+ array(
+ 'default' => $defaults['navigation_background_current_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[navigation_background_current_color]',
+ array(
+ 'label' => __( 'Background Current', 'gp-premium' ),
+ 'section' => 'navigation_color_section',
+ 'settings' => 'generate_settings[navigation_background_current_color]',
+ 'palette' => $palettes,
+ 'priority' => 5,
+ )
+ )
+ );
+
+ // Add color settings.
+ $navigation_colors = array();
+ $navigation_colors[] = array(
+ 'slug' => 'navigation_text_color',
+ 'default' => $defaults['navigation_text_color'],
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'priority' => 2,
+ );
+ $navigation_colors[] = array(
+ 'slug' => 'navigation_text_hover_color',
+ 'default' => $defaults['navigation_text_hover_color'],
+ 'label' => __( 'Text Hover', 'gp-premium' ),
+ 'priority' => 4,
+ );
+ $navigation_colors[] = array(
+ 'slug' => 'navigation_text_current_color',
+ 'default' => $defaults['navigation_text_current_color'],
+ 'label' => __( 'Text Current', 'gp-premium' ),
+ 'priority' => 6,
+ );
+
+ foreach ( $navigation_colors as $color ) {
+ $wp_customize->add_setting(
+ 'generate_settings[' . $color['slug'] . ']',
+ array(
+ 'default' => $color['default'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ $color['slug'],
+ array(
+ 'label' => $color['label'],
+ 'section' => 'navigation_color_section',
+ 'settings' => 'generate_settings[' . $color['slug'] . ']',
+ 'priority' => $color['priority'],
+ )
+ )
+ );
+ }
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_primary_navigation_sub_menu_items',
+ array(
+ 'section' => 'navigation_color_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Sub-Menu Items', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 7,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[subnavigation_background_color]',
+ array(
+ 'default' => $defaults['subnavigation_background_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[subnavigation_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'navigation_color_section',
+ 'settings' => 'generate_settings[subnavigation_background_color]',
+ 'palette' => $palettes,
+ 'priority' => 8,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[subnavigation_background_hover_color]',
+ array(
+ 'default' => $defaults['subnavigation_background_hover_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[subnavigation_background_hover_color]',
+ array(
+ 'label' => __( 'Background Hover', 'gp-premium' ),
+ 'section' => 'navigation_color_section',
+ 'settings' => 'generate_settings[subnavigation_background_hover_color]',
+ 'palette' => $palettes,
+ 'priority' => 10,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[subnavigation_background_current_color]',
+ array(
+ 'default' => $defaults['subnavigation_background_current_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[subnavigation_background_current_color]',
+ array(
+ 'label' => __( 'Background Current', 'gp-premium' ),
+ 'section' => 'navigation_color_section',
+ 'settings' => 'generate_settings[subnavigation_background_current_color]',
+ 'palette' => $palettes,
+ 'priority' => 12,
+ )
+ )
+ );
+
+ // Add color settings.
+ $subnavigation_colors = array();
+ $subnavigation_colors[] = array(
+ 'slug' => 'subnavigation_text_color',
+ 'default' => $defaults['subnavigation_text_color'],
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'priority' => 9,
+ );
+ $subnavigation_colors[] = array(
+ 'slug' => 'subnavigation_text_hover_color',
+ 'default' => $defaults['subnavigation_text_hover_color'],
+ 'label' => __( 'Text Hover', 'gp-premium' ),
+ 'priority' => 11,
+ );
+ $subnavigation_colors[] = array(
+ 'slug' => 'subnavigation_text_current_color',
+ 'default' => $defaults['subnavigation_text_current_color'],
+ 'label' => __( 'Text Current', 'gp-premium' ),
+ 'priority' => 13,
+ );
+
+ foreach ( $subnavigation_colors as $color ) {
+ $wp_customize->add_setting(
+ 'generate_settings[' . $color['slug'] . ']',
+ array(
+ 'default' => $color['default'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ $color['slug'],
+ array(
+ 'label' => $color['label'],
+ 'section' => 'navigation_color_section',
+ 'settings' => 'generate_settings[' . $color['slug'] . ']',
+ 'priority' => $color['priority'],
+ )
+ )
+ );
+ }
+
+ if ( isset( $defaults['navigation_search_background_color'] ) ) {
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_primary_navigation_search',
+ array(
+ 'section' => 'navigation_color_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Navigation Search', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 15,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[navigation_search_background_color]',
+ array(
+ 'default' => $defaults['navigation_search_background_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[navigation_search_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'navigation_color_section',
+ 'settings' => 'generate_settings[navigation_search_background_color]',
+ 'palette' => $palettes,
+ 'priority' => 16,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[navigation_search_text_color]',
+ array(
+ 'default' => $defaults['navigation_search_text_color'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[navigation_search_text_color]',
+ array(
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'section' => 'navigation_color_section',
+ 'settings' => 'generate_settings[navigation_search_text_color]',
+ 'priority' => 17,
+ )
+ )
+ );
+ }
+
+ $wp_customize->add_section(
+ 'buttons_color_section',
+ array(
+ 'title' => __( 'Buttons', 'gp-premium' ),
+ 'priority' => 75,
+ 'panel' => 'generate_colors_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_buttons_color_shortcuts',
+ array(
+ 'section' => 'buttons_color_section',
+ 'element' => __( 'Button', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'typography' => 'font_buttons_section',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[form_button_background_color]',
+ array(
+ 'default' => $defaults['form_button_background_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[form_button_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'buttons_color_section',
+ 'settings' => 'generate_settings[form_button_background_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[form_button_text_color]',
+ array(
+ 'default' => $defaults['form_button_text_color'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'form_button_text_color',
+ array(
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'section' => 'buttons_color_section',
+ 'settings' => 'generate_settings[form_button_text_color]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[form_button_background_color_hover]',
+ array(
+ 'default' => $defaults['form_button_background_color_hover'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[form_button_background_color_hover]',
+ array(
+ 'label' => __( 'Background Hover', 'gp-premium' ),
+ 'section' => 'buttons_color_section',
+ 'settings' => 'generate_settings[form_button_background_color_hover]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[form_button_text_color_hover]',
+ array(
+ 'default' => $defaults['form_button_text_color_hover'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'form_button_text_color_hover',
+ array(
+ 'label' => __( 'Text Hover', 'gp-premium' ),
+ 'section' => 'buttons_color_section',
+ 'settings' => 'generate_settings[form_button_text_color_hover]',
+ )
+ )
+ );
+
+ // Add Content Colors section.
+ $wp_customize->add_section(
+ 'content_color_section',
+ array(
+ 'title' => __( 'Content', 'gp-premium' ),
+ 'priority' => 80,
+ 'panel' => 'generate_colors_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_content_color_shortcuts',
+ array(
+ 'section' => 'content_color_section',
+ 'element' => __( 'Content', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'generate_layout_container',
+ 'typography' => 'font_content_section',
+ 'backgrounds' => 'generate_backgrounds_content',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[content_background_color]',
+ array(
+ 'default' => $defaults['content_background_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[content_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'content_color_section',
+ 'settings' => 'generate_settings[content_background_color]',
+ 'palette' => $palettes,
+ 'priority' => 1,
+ )
+ )
+ );
+
+ // Add color settings.
+ $content_colors = array();
+ $content_colors[] = array(
+ 'slug' => 'content_text_color',
+ 'default' => $defaults['content_text_color'],
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'priority' => 2,
+ );
+ $content_colors[] = array(
+ 'slug' => 'content_link_color',
+ 'default' => $defaults['content_link_color'],
+ 'label' => __( 'Link', 'gp-premium' ),
+ 'priority' => 3,
+ );
+ $content_colors[] = array(
+ 'slug' => 'content_link_hover_color',
+ 'default' => $defaults['content_link_hover_color'],
+ 'label' => __( 'Link Hover', 'gp-premium' ),
+ 'priority' => 4,
+ );
+ $content_colors[] = array(
+ 'slug' => 'content_title_color',
+ 'default' => $defaults['content_title_color'],
+ 'label' => __( 'Content Title', 'gp-premium' ),
+ 'priority' => 5,
+ );
+ $content_colors[] = array(
+ 'slug' => 'blog_post_title_color',
+ 'default' => $defaults['blog_post_title_color'],
+ 'label' => __( 'Archive Content Title', 'gp-premium' ),
+ 'priority' => 6,
+ );
+ $content_colors[] = array(
+ 'slug' => 'blog_post_title_hover_color',
+ 'default' => $defaults['blog_post_title_hover_color'],
+ 'label' => __( 'Archive Content Title Hover', 'gp-premium' ),
+ 'priority' => 7,
+ );
+ $content_colors[] = array(
+ 'slug' => 'entry_meta_text_color',
+ 'default' => $defaults['entry_meta_text_color'],
+ 'label' => __( 'Entry Meta Text', 'gp-premium' ),
+ 'priority' => 8,
+ );
+ $content_colors[] = array(
+ 'slug' => 'entry_meta_link_color',
+ 'default' => $defaults['entry_meta_link_color'],
+ 'label' => __( 'Entry Meta Links', 'gp-premium' ),
+ 'priority' => 9,
+ );
+ $content_colors[] = array(
+ 'slug' => 'entry_meta_link_color_hover',
+ 'default' => $defaults['entry_meta_link_color_hover'],
+ 'label' => __( 'Entry Meta Links Hover', 'gp-premium' ),
+ 'priority' => 10,
+ );
+ $content_colors[] = array(
+ 'slug' => 'h1_color',
+ 'default' => $defaults['h1_color'],
+ 'label' => __( 'Heading 1 (H1) Color', 'gp-premium' ),
+ 'priority' => 11,
+ );
+ $content_colors[] = array(
+ 'slug' => 'h2_color',
+ 'default' => $defaults['h2_color'],
+ 'label' => __( 'Heading 2 (H2) Color', 'gp-premium' ),
+ 'priority' => 12,
+ );
+ $content_colors[] = array(
+ 'slug' => 'h3_color',
+ 'default' => $defaults['h3_color'],
+ 'label' => __( 'Heading 3 (H3) Color', 'gp-premium' ),
+ 'priority' => 13,
+ );
+
+ if ( isset( $defaults['h4_color'] ) ) {
+ $content_colors[] = array(
+ 'slug' => 'h4_color',
+ 'default' => $defaults['h4_color'],
+ 'label' => __( 'Heading 4 (H4) Color', 'gp-premium' ),
+ 'priority' => 14,
+ );
+ }
+
+ if ( isset( $defaults['h5_color'] ) ) {
+ $content_colors[] = array(
+ 'slug' => 'h5_color',
+ 'default' => $defaults['h5_color'],
+ 'label' => __( 'Heading 5 (H5) Color', 'gp-premium' ),
+ 'priority' => 15,
+ );
+ }
+
+ foreach ( $content_colors as $color ) {
+ $wp_customize->add_setting(
+ 'generate_settings[' . $color['slug'] . ']',
+ array(
+ 'default' => $color['default'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ $color['slug'],
+ array(
+ 'label' => $color['label'],
+ 'section' => 'content_color_section',
+ 'settings' => 'generate_settings[' . $color['slug'] . ']',
+ 'priority' => $color['priority'],
+ )
+ )
+ );
+ }
+
+ // Add Sidebar Widget colors.
+ $wp_customize->add_section(
+ 'sidebar_widget_color_section',
+ array(
+ 'title' => __( 'Sidebar Widgets', 'gp-premium' ),
+ 'priority' => 90,
+ 'panel' => 'generate_colors_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_sidebar_color_shortcuts',
+ array(
+ 'section' => 'sidebar_widget_color_section',
+ 'element' => __( 'Sidebar', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'generate_layout_sidebars',
+ 'typography' => 'font_widget_section',
+ 'backgrounds' => 'generate_backgrounds_sidebars',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[sidebar_widget_background_color]',
+ array(
+ 'default' => $defaults['sidebar_widget_background_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[sidebar_widget_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'sidebar_widget_color_section',
+ 'settings' => 'generate_settings[sidebar_widget_background_color]',
+ 'palette' => $palettes,
+ 'priority' => 1,
+ )
+ )
+ );
+
+ // Add color settings.
+ $sidebar_widget_colors = array();
+ $sidebar_widget_colors[] = array(
+ 'slug' => 'sidebar_widget_text_color',
+ 'default' => $defaults['sidebar_widget_text_color'],
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'priority' => 2,
+ );
+ $sidebar_widget_colors[] = array(
+ 'slug' => 'sidebar_widget_link_color',
+ 'default' => $defaults['sidebar_widget_link_color'],
+ 'label' => __( 'Link', 'gp-premium' ),
+ 'priority' => 3,
+ );
+ $sidebar_widget_colors[] = array(
+ 'slug' => 'sidebar_widget_link_hover_color',
+ 'default' => $defaults['sidebar_widget_link_hover_color'],
+ 'label' => __( 'Link Hover', 'gp-premium' ),
+ 'priority' => 4,
+ );
+ $sidebar_widget_colors[] = array(
+ 'slug' => 'sidebar_widget_title_color',
+ 'default' => $defaults['sidebar_widget_title_color'],
+ 'label' => __( 'Widget Title', 'gp-premium' ),
+ 'priority' => 5,
+ );
+
+ foreach ( $sidebar_widget_colors as $color ) {
+ $wp_customize->add_setting(
+ 'generate_settings[' . $color['slug'] . ']',
+ array(
+ 'default' => $color['default'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ $color['slug'],
+ array(
+ 'label' => $color['label'],
+ 'section' => 'sidebar_widget_color_section',
+ 'settings' => 'generate_settings[' . $color['slug'] . ']',
+ 'priority' => $color['priority'],
+ )
+ )
+ );
+ }
+
+ // Add Form colors.
+ $wp_customize->add_section(
+ 'form_color_section',
+ array(
+ 'title' => __( 'Forms', 'gp-premium' ),
+ 'priority' => 130,
+ 'panel' => 'generate_colors_panel',
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[form_background_color]',
+ array(
+ 'default' => $defaults['form_background_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[form_background_color]',
+ array(
+ 'label' => __( 'Form Background', 'gp-premium' ),
+ 'section' => 'form_color_section',
+ 'settings' => 'generate_settings[form_background_color]',
+ 'palette' => $palettes,
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[form_background_color_focus]',
+ array(
+ 'default' => $defaults['form_background_color_focus'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[form_background_color_focus]',
+ array(
+ 'label' => __( 'Form Background Focus', 'gp-premium' ),
+ 'section' => 'form_color_section',
+ 'settings' => 'generate_settings[form_background_color_focus]',
+ 'palette' => $palettes,
+ 'priority' => 3,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[form_border_color]',
+ array(
+ 'default' => $defaults['form_border_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[form_border_color]',
+ array(
+ 'label' => __( 'Form Border', 'gp-premium' ),
+ 'section' => 'form_color_section',
+ 'settings' => 'generate_settings[form_border_color]',
+ 'palette' => $palettes,
+ 'priority' => 5,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[form_border_color_focus]',
+ array(
+ 'default' => $defaults['form_border_color_focus'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[form_border_color_focus]',
+ array(
+ 'label' => __( 'Form Border Focus', 'gp-premium' ),
+ 'section' => 'form_color_section',
+ 'settings' => 'generate_settings[form_border_color_focus]',
+ 'palette' => $palettes,
+ 'priority' => 6,
+ )
+ )
+ );
+
+ // Add color settings.
+ $form_colors = array();
+ $form_colors[] = array(
+ 'slug' => 'form_text_color',
+ 'default' => $defaults['form_text_color'],
+ 'label' => __( 'Form Text', 'gp-premium' ),
+ 'priority' => 2,
+ );
+ $form_colors[] = array(
+ 'slug' => 'form_text_color_focus',
+ 'default' => $defaults['form_text_color_focus'],
+ 'label' => __( 'Form Text Focus', 'gp-premium' ),
+ 'priority' => 4,
+ );
+
+ foreach ( $form_colors as $color ) {
+ $wp_customize->add_setting(
+ 'generate_settings[' . $color['slug'] . ']',
+ array(
+ 'default' => $color['default'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ $color['slug'],
+ array(
+ 'label' => $color['label'],
+ 'section' => 'form_color_section',
+ 'settings' => 'generate_settings[' . $color['slug'] . ']',
+ 'priority' => $color['priority'],
+ )
+ )
+ );
+ }
+
+ // Add Footer colors.
+ $wp_customize->add_section(
+ 'footer_color_section',
+ array(
+ 'title' => __( 'Footer', 'gp-premium' ),
+ 'priority' => 150,
+ 'panel' => 'generate_colors_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_footer_color_shortcuts',
+ array(
+ 'section' => 'footer_color_section',
+ 'element' => __( 'Footer', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'generate_layout_footer',
+ 'typography' => 'font_footer_section',
+ 'backgrounds' => 'generate_backgrounds_footer',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_footer_widgets_title',
+ array(
+ 'section' => 'footer_color_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Footer Widgets', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[footer_widget_background_color]',
+ array(
+ 'default' => $defaults['footer_widget_background_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[footer_widget_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'footer_color_section',
+ 'settings' => 'generate_settings[footer_widget_background_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Add color settings.
+ $footer_widget_colors = array();
+ $footer_widget_colors[] = array(
+ 'slug' => 'footer_widget_text_color',
+ 'default' => $defaults['footer_widget_text_color'],
+ 'label' => __( 'Text', 'gp-premium' ),
+ );
+ $footer_widget_colors[] = array(
+ 'slug' => 'footer_widget_link_color',
+ 'default' => $defaults['footer_widget_link_color'],
+ 'label' => __( 'Link', 'gp-premium' ),
+ );
+ $footer_widget_colors[] = array(
+ 'slug' => 'footer_widget_link_hover_color',
+ 'default' => $defaults['footer_widget_link_hover_color'],
+ 'label' => __( 'Link Hover', 'gp-premium' ),
+ );
+ $footer_widget_colors[] = array(
+ 'slug' => 'footer_widget_title_color',
+ 'default' => $defaults['footer_widget_title_color'],
+ 'label' => __( 'Widget Title', 'gp-premium' ),
+ );
+
+ foreach ( $footer_widget_colors as $color ) {
+ $wp_customize->add_setting(
+ 'generate_settings[' . $color['slug'] . ']',
+ array(
+ 'default' => $color['default'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ $color['slug'],
+ array(
+ 'label' => $color['label'],
+ 'section' => 'footer_color_section',
+ 'settings' => 'generate_settings[' . $color['slug'] . ']',
+ )
+ )
+ );
+ }
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_footer_title',
+ array(
+ 'section' => 'footer_color_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Footer Bar', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[footer_background_color]',
+ array(
+ 'default' => $defaults['footer_background_color'],
+ 'type' => 'option',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[footer_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'footer_color_section',
+ 'settings' => 'generate_settings[footer_background_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Add color settings.
+ $footer_colors = array();
+ $footer_colors[] = array(
+ 'slug' => 'footer_text_color',
+ 'default' => $defaults['footer_text_color'],
+ 'label' => __( 'Text', 'gp-premium' ),
+ );
+ $footer_colors[] = array(
+ 'slug' => 'footer_link_color',
+ 'default' => $defaults['footer_link_color'],
+ 'label' => __( 'Link', 'gp-premium' ),
+ );
+ $footer_colors[] = array(
+ 'slug' => 'footer_link_hover_color',
+ 'default' => $defaults['footer_link_hover_color'],
+ 'label' => __( 'Link Hover', 'gp-premium' ),
+ );
+
+ foreach ( $footer_colors as $color ) {
+ $wp_customize->add_setting(
+ 'generate_settings[' . $color['slug'] . ']',
+ array(
+ 'default' => $color['default'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ $color['slug'],
+ array(
+ 'label' => $color['label'],
+ 'section' => 'footer_color_section',
+ 'settings' => 'generate_settings[' . $color['slug'] . ']',
+ )
+ )
+ );
+ }
+
+ if ( isset( $defaults['back_to_top_background_color'] ) ) {
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_back_to_top_title',
+ array(
+ 'section' => 'footer_color_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Back to Top Button', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[back_to_top_background_color]',
+ array(
+ 'default' => $defaults['back_to_top_background_color'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[back_to_top_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'footer_color_section',
+ 'settings' => 'generate_settings[back_to_top_background_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[back_to_top_text_color]',
+ array(
+ 'default' => $defaults['back_to_top_text_color'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[back_to_top_text_color]',
+ array(
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'section' => 'footer_color_section',
+ 'settings' => 'generate_settings[back_to_top_text_color]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[back_to_top_background_color_hover]',
+ array(
+ 'default' => $defaults['back_to_top_background_color_hover'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[back_to_top_background_color_hover]',
+ array(
+ 'label' => __( 'Background Hover', 'gp-premium' ),
+ 'section' => 'footer_color_section',
+ 'settings' => 'generate_settings[back_to_top_background_color_hover]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[back_to_top_text_color_hover]',
+ array(
+ 'default' => $defaults['back_to_top_text_color_hover'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[back_to_top_text_color_hover]',
+ array(
+ 'label' => __( 'Text Hover', 'gp-premium' ),
+ 'section' => 'footer_color_section',
+ 'settings' => 'generate_settings[back_to_top_text_color_hover]',
+ )
+ )
+ );
+ }
+ }
+}
+
+if ( ! function_exists( 'generate_get_color_setting' ) ) {
+ /**
+ * Wrapper function to get our settings
+ *
+ * @since 1.3.42
+ * @param string $setting The setting to check.
+ */
+ function generate_get_color_setting( $setting ) {
+
+ // Bail if we don't have our color defaults.
+ if ( ! function_exists( 'generate_get_color_defaults' ) ) {
+ return;
+ }
+
+ if ( function_exists( 'generate_get_defaults' ) ) {
+ $defaults = array_merge( generate_get_defaults(), generate_get_color_defaults() );
+ } else {
+ $defaults = generate_get_color_defaults();
+ }
+
+ $generate_settings = wp_parse_args(
+ get_option( 'generate_settings', array() ),
+ $defaults
+ );
+
+ return $generate_settings[ $setting ];
+ }
+}
+
+if ( ! function_exists( 'generate_colors_rgba_to_hex' ) ) {
+ /**
+ * Convert RGBA to hex if necessary
+ *
+ * @since 1.3.42
+ * @param string $rgba The string to convert to hex.
+ */
+ function generate_colors_rgba_to_hex( $rgba ) {
+ // If it's not rgba, return it.
+ if ( false === strpos( $rgba, 'rgba' ) ) {
+ return $rgba;
+ }
+
+ return substr( $rgba, 0, strrpos( $rgba, ',' ) ) . ')';
+ }
+}
+
+if ( ! function_exists( 'generate_get_default_color_palettes' ) ) {
+ /**
+ * Set up our colors for the color picker palettes and filter them so you can change them
+ *
+ * @since 1.3.42
+ */
+ function generate_get_default_color_palettes() {
+ $palettes = array(
+ generate_colors_rgba_to_hex( generate_get_color_setting( 'link_color' ) ),
+ generate_colors_rgba_to_hex( generate_get_color_setting( 'background_color' ) ),
+ generate_colors_rgba_to_hex( generate_get_color_setting( 'navigation_background_color' ) ),
+ generate_colors_rgba_to_hex( generate_get_color_setting( 'navigation_background_hover_color' ) ),
+ '#F1C40F',
+ '#1e72bd',
+ '#1ABC9C',
+ '#3498DB',
+ );
+
+ return apply_filters( 'generate_default_color_palettes', $palettes );
+ }
+}
+
+if ( ! function_exists( 'generate_enqueue_color_palettes' ) ) {
+ add_action( 'customize_controls_enqueue_scripts', 'generate_enqueue_color_palettes', 1001 );
+ /**
+ * Add our custom color palettes to the color pickers in the Customizer.
+ * Hooks into 1001 priority to show up after Secondary Nav.
+ *
+ * @since 1.3.42
+ */
+ function generate_enqueue_color_palettes() {
+ // Old versions of WP don't get nice things.
+ if ( ! function_exists( 'wp_add_inline_script' ) ) {
+ return;
+ }
+
+ // Grab our palette array and turn it into JS.
+ $palettes = wp_json_encode( generate_get_default_color_palettes() );
+
+ // Add our custom palettes.
+ // json_encode takes care of escaping.
+ wp_add_inline_script( 'wp-color-picker', 'jQuery.wp.wpColorPicker.prototype.options.palettes = ' . $palettes . ';' );
+ }
+}
+
+if ( ! function_exists( 'generate_colors_customizer_live_preview' ) ) {
+ add_action( 'customize_preview_init', 'generate_colors_customizer_live_preview' );
+ /**
+ * Add our live preview javascript.
+ *
+ * @since 0.1
+ */
+ function generate_colors_customizer_live_preview() {
+ wp_enqueue_script(
+ 'generate-colors-customizer',
+ trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/customizer.js',
+ array( 'jquery', 'customize-preview' ),
+ GENERATE_COLORS_VERSION,
+ true
+ );
+
+ wp_register_script(
+ 'generate-wc-colors-customizer',
+ trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/wc-customizer.js',
+ array( 'jquery', 'customize-preview', 'generate-colors-customizer' ),
+ GENERATE_COLORS_VERSION,
+ true
+ );
+
+ wp_register_script(
+ 'generate-menu-plus-colors-customizer',
+ trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/menu-plus-customizer.js',
+ array( 'jquery', 'customize-preview', 'generate-colors-customizer' ),
+ GENERATE_COLORS_VERSION,
+ true
+ );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/customizer.js
new file mode 100644
index 00000000..a2fb4253
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/customizer.js
@@ -0,0 +1,620 @@
+/**
+ * Theme Customizer enhancements for a better user experience.
+ *
+ * Contains handlers to make Theme Customizer preview reload changes asynchronously.
+ */
+function generate_colors_live_update( id, selector, property, default_value, get_value, settings ) {
+ default_value = typeof default_value !== 'undefined' ? default_value : 'initial';
+ get_value = typeof get_value !== 'undefined' ? get_value : '';
+ settings = typeof settings !== 'undefined' ? settings : 'generate_settings';
+ wp.customize( settings + '[' + id + ']', function( value ) {
+ value.bind( function( newval ) {
+
+ // Stop the header link color from applying to the site title.
+ if ( 'header_link_color' === id || 'header_link_color' === id ) {
+ jQuery( '.site-header a' ).addClass( 'header-link' );
+ jQuery( '.site-header .main-title a' ).removeClass( 'header-link' );
+ }
+
+ if ( 'content_link_color' === id || 'content_link_color_hover' === id || 'entry_meta_link_color' === id || 'blog_post_title_color' === id ) {
+ var content_link = jQuery( '.inside-article a' );
+ var meta = jQuery( '.entry-meta a' );
+ var title = jQuery( '.entry-title a' );
+
+ content_link.attr( 'data-content-link-color', true );
+
+ if ( '' !== wp.customize.value('generate_settings[entry_meta_link_color]')() ) {
+ meta.attr( 'data-content-link-color', '' );
+ } else {
+ meta.attr( 'data-content-link-color', true );
+ }
+
+ if ( '' !== wp.customize.value('generate_settings[blog_post_title_color]')() ) {
+ title.attr( 'data-content-link-color', '' );
+ } else {
+ title.attr( 'data-content-link-color', true );
+ }
+ }
+
+ default_value = ( '' !== get_value ) ? wp.customize.value('generate_settings[' + get_value + ']')() : default_value;
+ newval = ( '' !== newval ) ? newval : default_value;
+ var unique_id = ( 'generate_secondary_nav_settings' == settings ) ? 'secondary_' : '';
+ if ( jQuery( 'style#' + unique_id + id ).length ) {
+ jQuery( 'style#' + unique_id + id ).html( selector + '{' + property + ':' + newval + ';}' );
+ } else {
+ jQuery( 'head' ).append( '' );
+ setTimeout(function() {
+ jQuery( 'style#' + id ).not( ':last' ).remove();
+ }, 1000);
+ }
+
+ } );
+ } );
+}
+
+/**
+ * Header background color
+ * Empty: transparent
+ */
+generate_colors_live_update( 'top_bar_background_color', '.top-bar', 'background-color', 'transparent' );
+
+/**
+ * Header text color
+ * Empty: text_color
+ */
+generate_colors_live_update( 'top_bar_text_color', '.top-bar', 'color', '', 'text_color' );
+
+/**
+ * Header link color
+ * Empty: link_color
+ */
+generate_colors_live_update( 'top_bar_link_color', '.top-bar a, .top-bar a:visited', 'color', '', 'link_color' );
+
+/**
+ * Header link color hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'top_bar_link_color_hover', '.top-bar a:hover', 'color', '', 'link_color_hover' );
+
+
+/**
+ * Header background color
+ * Empty: transparent
+ */
+generate_colors_live_update( 'header_background_color', '.site-header', 'background-color', 'transparent' );
+
+/**
+ * Header text color
+ * Empty: text_color
+ */
+generate_colors_live_update( 'header_text_color', '.site-header', 'color', '', 'text_color' );
+
+/**
+ * Header link color
+ * Empty: link_color
+ */
+generate_colors_live_update( 'header_link_color', '.site-header a.header-link, .site-header a.header-link:visited', 'color', '', 'link_color' );
+
+/**
+ * Header link color hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'header_link_hover_color', '.site-header a.header-link:hover', 'color', '', 'link_color_hover' );
+
+/**
+ * Site title color
+ * Empty: link_color
+ */
+generate_colors_live_update( 'site_title_color', '.main-title a,.main-title a:hover,.main-title a:visited,.header-wrap .navigation-stick .main-title a, .header-wrap .navigation-stick .main-title a:hover, .header-wrap .navigation-stick .main-title a:visited', 'color', '', 'link_color' );
+
+/**
+ * Site tagline color
+ * Empty: text_color
+ */
+generate_colors_live_update( 'site_tagline_color', '.site-description', 'color', '', 'text_color' );
+
+/**
+ * Main navigation background
+ * Empty: transparent
+ */
+generate_colors_live_update( 'navigation_background_color', '.main-navigation', 'background-color', 'transparent' );
+
+/**
+ * Primary navigation text color
+ * Empty: link_color
+ */
+generate_colors_live_update( 'navigation_text_color',
+ '.main-navigation .main-nav ul li a,\
+ .menu-toggle,button.menu-toggle:hover,\
+ button.menu-toggle:focus,\
+ .main-navigation .mobile-bar-items a,\
+ .main-navigation .mobile-bar-items a:hover,\
+ .main-navigation .mobile-bar-items a:focus,\
+ .main-navigation .menu-bar-items',
+ 'color', '', 'link_color'
+);
+
+/**
+ * Primary navigation text color hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'navigation_text_hover_color',
+ '.navigation-search input[type="search"],\
+ .navigation-search input[type="search"]:active,\
+ .navigation-search input[type="search"]:focus,\
+ .main-navigation .main-nav ul li:hover > a,\
+ .main-navigation .main-nav ul li:focus > a,\
+ .main-navigation .main-nav ul li.sfHover > a,\
+ .main-navigation .menu-bar-item:hover a',
+ 'color', '', 'link_color_hover'
+);
+
+/**
+ * Primary navigation menu item hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'navigation_background_hover_color',
+ '.navigation-search input[type="search"],\
+ .navigation-search input[type="search"]:focus,\
+ .main-navigation .main-nav ul li:hover > a,\
+ .main-navigation .main-nav ul li:focus > a,\
+ .main-navigation .main-nav ul li.sfHover > a,\
+ .main-navigation .menu-bar-item:hover a',
+ 'background-color', 'transparent'
+);
+
+/**
+ * Primary sub-navigation color
+ * Empty: transparent
+ */
+generate_colors_live_update( 'subnavigation_background_color', '.main-navigation ul ul', 'background-color', 'transparent' );
+
+/**
+ * Primary sub-navigation text color
+ * Empty: link_color
+ */
+generate_colors_live_update( 'subnavigation_text_color', '.main-navigation .main-nav ul ul li a', 'color', 'link_color' );
+
+/**
+ * Primary sub-navigation hover
+ */
+var subnavigation_hover = '.main-navigation .main-nav ul ul li:hover > a, \
+ .main-navigation .main-nav ul ul li:focus > a, \
+ .main-navigation .main-nav ul ul li.sfHover > a';
+
+/**
+ * Primary sub-navigation text hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'subnavigation_text_hover_color', subnavigation_hover, 'color', '', 'link_color_hover' );
+
+/**
+ * Primary sub-navigation background hover
+ * Empty: transparent
+ */
+generate_colors_live_update( 'subnavigation_background_hover_color', subnavigation_hover, 'background-color', 'transparent' );
+
+/**
+ * Navigation current selectors
+ */
+var navigation_current = '.main-navigation .main-nav ul li[class*="current-menu-"] > a, \
+ .main-navigation .main-nav ul li[class*="current-menu-"]:hover > a, \
+ .main-navigation .main-nav ul li[class*="current-menu-"].sfHover > a';
+
+/**
+ * Primary navigation current text
+ * Empty: link_color
+ */
+generate_colors_live_update( 'navigation_text_current_color', navigation_current, 'color', '', 'link_color' );
+
+/**
+ * Primary navigation current text
+ * Empty: transparent
+ */
+generate_colors_live_update( 'navigation_background_current_color', navigation_current, 'background-color', 'transparent' );
+
+/**
+ * Primary sub-navigation current selectors
+ */
+var subnavigation_current = '.main-navigation .main-nav ul ul li[class*="current-menu-"] > a,\
+ .main-navigation .main-nav ul ul li[class*="current-menu-"]:hover > a, \
+ .main-navigation .main-nav ul ul li[class*="current-menu-"].sfHover > a';
+
+/**
+ * Primary sub-navigation current text
+ * Empty: link_color
+ */
+generate_colors_live_update( 'subnavigation_text_current_color', subnavigation_current, 'color', '', 'link_color' );
+
+/**
+ * Primary navigation current item background
+ * Empty: transparent
+ */
+generate_colors_live_update( 'subnavigation_background_current_color', subnavigation_current, 'background-color', 'transparent' );
+
+/**
+ * Secondary navigation background
+ * Empty: transparent
+ */
+generate_colors_live_update( 'navigation_background_color', '.secondary-navigation', 'background-color', 'transparent', '', 'generate_secondary_nav_settings' );
+
+/**
+ * Secondary navigation text color
+ * Empty: link_color
+ */
+generate_colors_live_update( 'navigation_text_color',
+ '.secondary-navigation .main-nav ul li a,\
+ .secondary-navigation .menu-toggle,\
+ button.secondary-menu-toggle:hover,\
+ button.secondary-menu-toggle:focus, \
+ .secondary-navigation .top-bar, \
+ .secondary-navigation .top-bar a,\
+ .secondary-menu-bar-items,\
+ .secondary-menu-bar-items .menu-bar-item > a',
+ 'color', '', 'link_color', 'generate_secondary_nav_settings'
+);
+
+/**
+ * Navigation search
+ */
+wp.customize( 'generate_settings[navigation_search_background_color]', function( value ) {
+ value.bind( function( newval ) {
+ if ( jQuery( 'style#navigation_search_background_color' ).length ) {
+ jQuery( 'style#navigation_search_background_color' ).html( '.navigation-search input[type="search"],.navigation-search input[type="search"]:active, .navigation-search input[type="search"]:focus, .main-navigation .main-nav ul li.search-item.active > a, .main-navigation .menu-bar-items .search-item.active > a{background-color:' + newval + ';}' );
+ } else {
+ jQuery( 'head' ).append( '' );
+ setTimeout(function() {
+ jQuery( 'style#navigation_search_background_color' ).not( ':last' ).remove();
+ }, 1000);
+ }
+
+ if ( jQuery( 'style#navigation_search_background_opacity' ).length ) {
+ if ( newval ) {
+ jQuery( 'style#navigation_search_background_opacity' ).html( '.navigation-search input{opacity: 1;}' );
+ } else {
+ jQuery( 'style#navigation_search_background_opacity' ).html( '.navigation-search input{opacity: 0.9;}' );
+ }
+ } else {
+ if ( newval ) {
+ jQuery( 'head' ).append( '' );
+ }
+
+ setTimeout(function() {
+ jQuery( 'style#navigation_search_background_opacity' ).not( ':last' ).remove();
+ }, 1000);
+ }
+ } );
+} );
+
+generate_colors_live_update( 'navigation_search_text_color', '.navigation-search input[type="search"],.navigation-search input[type="search"]:active, .navigation-search input[type="search"]:focus, .main-navigation .main-nav ul li.search-item.active > a, .main-navigation .menu-bar-items .search-item.active > a', 'color', '' );
+
+/**
+ * Secondary navigation text color hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'navigation_text_hover_color',
+ '.secondary-navigation .main-nav ul li:hover > a, \
+ .secondary-navigation .main-nav ul li:focus > a, \
+ .secondary-navigation .main-nav ul li.sfHover > a,\
+ .secondary-menu-bar-items .menu-bar-item:hover > a',
+ 'color', '', 'link_color_hover', 'generate_secondary_nav_settings'
+);
+
+/**
+ * Secondary navigation menu item hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'navigation_background_hover_color',
+ '.secondary-navigation .main-nav ul li:hover > a, \
+ .secondary-navigation .main-nav ul li:focus > a, \
+ .secondary-navigation .main-nav ul li.sfHover > a, \
+ .secondary-menu-bar-items .menu-bar-item:hover > a',
+ 'background-color', 'transparent', '', 'generate_secondary_nav_settings'
+);
+
+/**
+ * Secondary navigation top bar link hover
+ */
+wp.customize( 'generate_secondary_nav_settings[navigation_background_hover_color]', function( value ) {
+ value.bind( function( newval ) {
+ if ( jQuery( 'style#secondary_nav_top_bar_hover' ).length ) {
+ jQuery( 'style#secondary_nav_top_bar_hover' ).html( '.secondary-navigation .top-bar a:hover,.secondary-navigation .top-bar a:focus{color:' + newval + ';}' );
+ } else {
+ jQuery( 'head' ).append( '' );
+ setTimeout(function() {
+ jQuery( 'style#secondary_nav_top_bar_hover' ).not( ':last' ).remove();
+ }, 1000);
+ }
+ } );
+} );
+
+generate_colors_live_update( 'navigation_top_bar_hover_color',
+ '.secondary-navigation .top-bar a:hover, \
+ .secondary-navigation .top-bar a:focus',
+ 'color', 'transparent', '', 'generate_secondary_nav_settings'
+);
+
+/**
+ * Secondary sub-navigation color
+ * Empty: transparent
+ */
+generate_colors_live_update( 'subnavigation_background_color', '.secondary-navigation ul ul', 'background-color', 'transparent', '', 'generate_secondary_nav_settings' );
+
+/**
+ * Secondary sub-navigation text color
+ * Empty: link_color
+ */
+generate_colors_live_update( 'subnavigation_text_color', '.secondary-navigation .main-nav ul ul li a', 'color', '', 'link_color', 'generate_secondary_nav_settings' );
+
+/**
+ * Secondary sub-navigation hover
+ */
+var secondary_subnavigation_hover = '.secondary-navigation .main-nav ul ul li > a:hover, \
+ .secondary-navigation .main-nav ul ul li:focus > a, \
+ .secondary-navigation .main-nav ul ul li.sfHover > a';
+
+/**
+ * Secondary sub-navigation text hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'subnavigation_text_hover_color', secondary_subnavigation_hover, 'color', '', 'link_color_hover', 'generate_secondary_nav_settings' );
+
+/**
+ * Secondary sub-navigation background hover
+ * Empty: transparent
+ */
+generate_colors_live_update( 'subnavigation_background_hover_color', secondary_subnavigation_hover, 'background-color', 'transparent', '', 'generate_secondary_nav_settings' );
+
+/**
+ * Secondary navigation current selectors
+ */
+var secondary_navigation_current = '.secondary-navigation .main-nav ul li[class*="current-menu-"] > a, \
+ .secondary-navigation .main-nav ul li[class*="current-menu-"]:hover > a, \
+ .secondary-navigation .main-nav ul li[class*="current-menu-"].sfHover > a';
+
+/**
+ * Secondary navigation current text
+ * Empty: link_color
+ */
+generate_colors_live_update( 'navigation_text_current_color', secondary_navigation_current, 'color', '', 'link_color', 'generate_secondary_nav_settings' );
+
+/**
+ * Secondary navigation current text
+ * Empty: transparent
+ */
+generate_colors_live_update( 'navigation_background_current_color', secondary_navigation_current, 'background-color', 'transparent', '', 'generate_secondary_nav_settings' );
+
+/**
+ * Secondary sub-navigation current selectors
+ */
+var secondary_subnavigation_current = '.secondary-navigation .main-nav ul ul li[class*="current-menu-"] > a,\
+ .secondary-navigation .main-nav ul ul li[class*="current-menu-"]:hover > a, \
+ .secondary-navigation .main-nav ul ul li[class*="current-menu-"].sfHover > a';
+
+/**
+ * Secondary sub-navigation current text
+ * Empty: link_color
+ */
+generate_colors_live_update( 'subnavigation_text_current_color', secondary_subnavigation_current, 'color', '', 'link_color', 'generate_secondary_nav_settings' );
+
+/**
+ * Primary navigation current item background
+ * Empty: transparent
+ */
+generate_colors_live_update( 'subnavigation_background_current_color', secondary_subnavigation_current, 'background-color', 'transparent', '', 'generate_secondary_nav_settings' );
+
+/**
+ * Content selectors
+ */
+var content = '.separate-containers .inside-article,\
+ .separate-containers .comments-area,\
+ .separate-containers .page-header,\
+ .one-container .container,\
+ .separate-containers .paging-navigation,\
+ .inside-page-header';
+
+/**
+ * Content background
+ * Empty: transparent
+ */
+generate_colors_live_update( 'content_background_color', content, 'background-color', 'transparent' );
+
+/**
+ * Content text color
+ * Empty: text_color
+ */
+generate_colors_live_update( 'content_text_color', content, 'color', '', 'text_color' );
+
+/**
+ * Content links
+ * Empty: link_color
+ */
+generate_colors_live_update( 'content_link_color',
+ '.inside-article a:not(.button):not(.wp-block-button__link)[data-content-link-color=true], \
+ .inside-article a:not(.button):not(.wp-block-button__link)[data-content-link-color=true]:visited,\
+ .paging-navigation a,\
+ .paging-navigation a:visited,\
+ .comments-area a,\
+ .comments-area a:visited,\
+ .page-header a,\
+ .page-header a:visited',
+ 'color', '', 'link_color'
+);
+
+/**
+ * Content links on hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'content_link_hover_color',
+ '.inside-article a:not(.button):not(.wp-block-button__link)[data-content-link-color=true]:hover,\
+ .paging-navigation a:hover,\
+ .comments-area a:hover,\
+ .page-header a:hover',
+ 'color', '', 'link_color_hover'
+);
+
+generate_colors_live_update( 'content_title_color', '.entry-header h1,.page-header h1', 'color', 'inherit', 'text_color' );
+generate_colors_live_update( 'blog_post_title_color', '.entry-title a,.entry-title a:visited', 'color', '', 'link_color' );
+generate_colors_live_update( 'blog_post_title_hover_color', '.entry-title a:hover', 'color', '', 'link_color_hover' );
+generate_colors_live_update( 'entry_meta_text_color', '.entry-meta', 'color', '', 'text_color' );
+generate_colors_live_update( 'entry_meta_link_color', '.entry-meta a, .entry-meta a:visited', 'color', '', 'link_color' );
+generate_colors_live_update( 'entry_meta_link_color_hover', '.entry-meta a:hover', 'color', '', 'link_color_hover' );
+generate_colors_live_update( 'h1_color', 'h1', 'color', '', 'text_color' );
+generate_colors_live_update( 'h2_color', 'h2', 'color', '', 'text_color' );
+generate_colors_live_update( 'h3_color', 'h3', 'color', '', 'text_color' );
+generate_colors_live_update( 'h4_color', 'h4', 'color', '', 'text_color' );
+generate_colors_live_update( 'h5_color', 'h5', 'color', '', 'text_color' );
+generate_colors_live_update( 'sidebar_widget_background_color', '.sidebar .widget', 'background-color', 'transparent' );
+generate_colors_live_update( 'sidebar_widget_text_color', '.sidebar .widget', 'color', '', 'text_color' );
+generate_colors_live_update( 'sidebar_widget_link_color', '.sidebar .widget a, .sidebar .widget a:visited', 'color', '', 'link_color' );
+generate_colors_live_update( 'sidebar_widget_link_hover_color', '.sidebar .widget a:hover', 'color', '', 'link_color_hover' );
+generate_colors_live_update( 'sidebar_widget_title_color', '.sidebar .widget .widget-title', 'color', '', 'text_color' );
+generate_colors_live_update( 'footer_widget_background_color', '.footer-widgets', 'background-color', 'transparent' );
+generate_colors_live_update( 'footer_widget_text_color', '.footer-widgets', 'color', '', 'text_color' );
+generate_colors_live_update( 'footer_widget_link_color', '.footer-widgets a, .footer-widgets a:visited', 'color', '', 'link_color' );
+generate_colors_live_update( 'footer_widget_link_hover_color', '.footer-widgets a:hover', 'color', '', 'link_color_hover' );
+generate_colors_live_update( 'footer_widget_title_color', '.footer-widgets .widget-title', 'color', '', 'text_color' );
+generate_colors_live_update( 'footer_background_color', '.site-info', 'background-color', 'transparent' );
+generate_colors_live_update( 'footer_text_color', '.site-info', 'color', '', 'text_color' );
+generate_colors_live_update( 'footer_link_color', '.site-info a, .site-info a:visited', 'color', '', 'link_color' );
+generate_colors_live_update( 'footer_link_hover_color', '.site-info a:hover', 'color', '', 'link_color_hover' );
+
+/**
+ * Form selectors
+ */
+var forms = 'input[type="text"], \
+ input[type="email"], \
+ input[type="url"], \
+ input[type="password"], \
+ input[type="search"], \
+ input[type="number"], \
+ input[type="tel"], \
+ textarea, \
+ select';
+
+/**
+ * Form background
+ * Empty: inherit
+ */
+generate_colors_live_update( 'form_background_color', forms, 'background-color', 'inherit' );
+
+/**
+ * Border color
+ * Empty: inherit
+ */
+generate_colors_live_update( 'form_border_color', forms, 'border-color' );
+
+/**
+ * Form text color
+ * Empty: text_color
+ */
+generate_colors_live_update( 'form_text_color', forms, 'color', '', 'text_color' );
+
+/**
+ * Form background on focus selectors
+ * Empty: inherit
+ */
+var forms_focus = 'input[type="text"]:focus, \
+ input[type="email"]:focus, \
+ input[type="url"]:focus, \
+ input[type="password"]:focus, \
+ input[type="search"]:focus,\
+ input[type="number"]:focus,\
+ input[type="tel"]:focus, \
+ textarea:focus, \
+ select:focus';
+
+/**
+ * Form background color on focus
+ * Empty: initial
+ */
+generate_colors_live_update( 'form_background_color_focus', forms_focus, 'background-color' );
+
+/**
+ * Form text color on focus
+ * Empty: initial
+ */
+generate_colors_live_update( 'form_text_color_focus', forms_focus, 'color' );
+
+/**
+ * Form border color on focus
+ * Empty: initial
+ */
+generate_colors_live_update( 'form_border_color_focus', forms_focus, 'border-color' );
+
+/**
+ * Button selectors
+ */
+var button = 'button, \
+ html input[type="button"], \
+ input[type="reset"], \
+ input[type="submit"],\
+ a.button,\
+ a.button:visited,\
+ a.wp-block-button__link:not(.has-background)';
+
+/**
+ * Button background
+ * Empty: initial
+ */
+generate_colors_live_update( 'form_button_background_color', button, 'background-color' );
+
+/**
+ * Button text
+ * Empty: initial
+ */
+generate_colors_live_update( 'form_button_text_color', button, 'color' );
+
+/**
+ * Button on hover/focus selectors
+ * Empty: initial
+ */
+var button_hover = 'button:hover, \
+ html input[type="button"]:hover, \
+ input[type="reset"]:hover, \
+ input[type="submit"]:hover,\
+ a.button:hover,\
+ button:focus, \
+ html input[type="button"]:focus, \
+ input[type="reset"]:focus, \
+ input[type="submit"]:focus,\
+ a.button:focus,\
+ a.wp-block-button__link:not(.has-background):active,\
+ a.wp-block-button__link:not(.has-background):focus,\
+ a.wp-block-button__link:not(.has-background):hover';
+
+/**
+ * Button color on hover
+ * Empty: initial
+ */
+generate_colors_live_update( 'form_button_background_color_hover', button_hover, 'background-color' );
+
+/**
+ * Button text color on hover
+ * Empty: initial
+ */
+generate_colors_live_update( 'form_button_text_color_hover', button_hover, 'color' );
+
+/**
+ * Back to top background color
+ * Empty: transparent
+ */
+generate_colors_live_update( 'back_to_top_background_color', 'a.generate-back-to-top', 'background-color', 'transparent' );
+
+/**
+ * Back to top text color
+ * Empty: text_color
+ */
+generate_colors_live_update( 'back_to_top_text_color', 'a.generate-back-to-top', 'color', '', 'text_color' );
+
+/**
+ * Back to top background color hover
+ * Empty: transparent
+ */
+generate_colors_live_update( 'back_to_top_background_color_hover', 'a.generate-back-to-top:hover,a.generate-back-to-top:focus', 'background-color', 'transparent' );
+
+/**
+ * Back to top text color hover
+ * Empty: text_color
+ */
+generate_colors_live_update( 'back_to_top_text_color_hover', 'a.generate-back-to-top:hover,a.generate-back-to-top:focus', 'color', '', 'text_color' );
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/menu-plus-customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/menu-plus-customizer.js
new file mode 100644
index 00000000..f74fa31e
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/menu-plus-customizer.js
@@ -0,0 +1,102 @@
+/**
+ * Main navigation background
+ * Empty: transparent
+ */
+generate_colors_live_update( 'slideout_background_color', '.main-navigation.slideout-navigation', 'background-color', '' );
+
+/**
+ * Primary navigation text color
+ * Empty: link_color
+ */
+generate_colors_live_update( 'slideout_text_color', '.slideout-navigation.main-navigation .main-nav ul li a, .slideout-navigation a, .slideout-navigation', 'color', '' );
+
+/**
+ * Primary navigation text color hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'slideout_text_hover_color',
+ '.slideout-navigation.main-navigation .main-nav ul li:hover > a,\
+ .slideout-navigation.main-navigation .main-nav ul li:focus > a,\
+ .slideout-navigation.main-navigation .main-nav ul li.sfHover > a',
+ 'color', ''
+);
+
+/**
+ * Primary navigation menu item hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'slideout_background_hover_color',
+ '.slideout-navigation.main-navigation .main-nav ul li:hover > a,\
+ .slideout-navigation.main-navigation .main-nav ul li:focus > a,\
+ .slideout-navigation.main-navigation .main-nav ul li.sfHover > a',
+ 'background-color', 'transparent'
+);
+
+/**
+ * Primary sub-navigation color
+ * Empty: transparent
+ */
+generate_colors_live_update( 'slideout_submenu_background_color', '.slideout-navigation.main-navigation ul ul', 'background-color', '' );
+
+/**
+ * Primary sub-navigation text color
+ * Empty: link_color
+ */
+generate_colors_live_update( 'slideout_submenu_text_color', '.slideout-navigation.main-navigation .main-nav ul ul li a', 'color', '' );
+
+/**
+ * Primary sub-navigation hover
+ */
+var slideout_submenu_hover = '.slideout-navigation.main-navigation .main-nav ul ul li:hover > a,\
+ .slideout-navigation.main-navigation .main-nav ul ul li:focus > a,\
+ .slideout-navigation.main-navigation .main-nav ul ul li.sfHover > a';
+
+/**
+ * Primary sub-navigation text hover
+ * Empty: link_color_hover
+ */
+generate_colors_live_update( 'slideout_submenu_text_hover_color', slideout_submenu_hover, 'color', '' );
+
+/**
+ * Primary sub-navigation background hover
+ * Empty: transparent
+ */
+generate_colors_live_update( 'slideout_submenu_background_hover_color', slideout_submenu_hover, 'background-color', '' );
+
+/**
+ * Navigation current selectors
+ */
+var slideout_current = '.slideout-navigation.main-navigation .main-nav ul li[class*="current-menu-"] > a,\
+ .slideout-navigation.main-navigation .main-nav ul li[class*="current-menu-"] > a:hover,\
+ .slideout-navigation.main-navigation .main-nav ul li[class*="current-menu-"].sfHover > a';
+
+/**
+ * Primary navigation current text
+ * Empty: link_color
+ */
+generate_colors_live_update( 'slideout_text_current_color', slideout_current, 'color', '' );
+
+/**
+ * Primary navigation current text
+ * Empty: transparent
+ */
+generate_colors_live_update( 'slideout_background_current_color', slideout_current, 'background-color' );
+
+/**
+ * Primary sub-navigation current selectors
+ */
+var slideout_submenu_current = '.slideout-navigation.main-navigation .main-nav ul ul li[class*="current-menu-"] > a,\
+ .slideout-navigation.main-navigation .main-nav ul ul li[class*="current-menu-"] > a:hover,\
+ .slideout-navigation.main-navigation .main-nav ul ul li[class*="current-menu-"].sfHover > a';
+
+/**
+ * Primary sub-navigation current text
+ * Empty: link_color
+ */
+generate_colors_live_update( 'slideout_submenu_text_current_color', slideout_submenu_current, 'color', '' );
+
+/**
+ * Primary navigation current item background
+ * Empty: transparent
+ */
+generate_colors_live_update( 'slideout_submenu_background_current_color', slideout_submenu_current, 'background-color' );
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/wc-customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/wc-customizer.js
new file mode 100644
index 00000000..b694f300
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/wc-customizer.js
@@ -0,0 +1,161 @@
+/**
+ * WooCommerce link color
+ */
+generate_colors_live_update( 'wc_product_title_color', '.woocommerce ul.products li.product .woocommerce-LoopProduct-link', 'color', '', 'link_color' );
+generate_colors_live_update( 'wc_product_title_color_hover', '.woocommerce ul.products li.product .woocommerce-LoopProduct-link:hover', 'color', '', 'link_color_hover' );
+
+/**
+ * WooCommerce primary button
+ */
+var wc_button = '.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button, button, \
+ html input[type="button"], \
+ input[type="reset"], \
+ input[type="submit"],\
+ .button,\
+ .button:visited';
+generate_colors_live_update( 'form_button_background_color', wc_button, 'background-color' );
+generate_colors_live_update( 'form_button_text_color', wc_button, 'color' );
+
+/**
+ * WooCommerce primary button hover
+ */
+var wc_button_hover = '.woocommerce #respond input#submit:hover, .woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover,button:hover, \
+ html input[type="button"]:hover, \
+ input[type="reset"]:hover, \
+ input[type="submit"]:hover,\
+ .button:hover,\
+ button:focus, \
+ html input[type="button"]:focus, \
+ input[type="reset"]:focus, \
+ input[type="submit"]:focus,\
+ .button:focus';
+generate_colors_live_update( 'form_button_background_color_hover', wc_button_hover, 'background-color' );
+generate_colors_live_update( 'form_button_text_color_hover', wc_button_hover, 'color' );
+
+/**
+ * WooCommerce alt button
+ */
+var wc_alt_button = '.woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt';
+generate_colors_live_update( 'wc_alt_button_background', wc_alt_button, 'background-color' );
+generate_colors_live_update( 'wc_alt_button_text', wc_alt_button, 'color' );
+
+/**
+ * WooCommerce alt button hover
+ */
+var wc_alt_button_hover = '.woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover';
+generate_colors_live_update( 'wc_alt_button_background_hover', wc_alt_button_hover, 'background-color' );
+generate_colors_live_update( 'wc_alt_button_text_hover', wc_alt_button_hover, 'color' );
+
+/**
+ * WooCommerce star ratings
+ */
+var wc_stars = '.woocommerce .star-rating span:before, .woocommerce .star-rating:before';
+generate_colors_live_update( 'wc_rating_stars', wc_stars, 'color' );
+
+/**
+ * WooCommerce sale sticker
+ */
+var wc_sale_sticker = '.woocommerce span.onsale';
+generate_colors_live_update( 'wc_sale_sticker_background', wc_sale_sticker, 'background-color' );
+generate_colors_live_update( 'wc_sale_sticker_text', wc_sale_sticker, 'color' );
+
+/**
+ * WooCommerce price
+ */
+var wc_price = '.woocommerce ul.products li.product .price, .woocommerce div.product p.price';
+generate_colors_live_update( 'wc_price_color', wc_price, 'color' );
+
+/**
+ * WooCommerce product tab text
+ */
+var wc_product_tab = '.woocommerce div.product .woocommerce-tabs ul.tabs li a';
+generate_colors_live_update( 'wc_product_tab', wc_product_tab, 'color' );
+
+/**
+ * WooCommerce product tab text highlight/active
+ */
+var wc_product_tab_active = '.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover, .woocommerce div.product .woocommerce-tabs ul.tabs li.active a';
+generate_colors_live_update( 'wc_product_tab_highlight', wc_product_tab_active, 'color' );
+
+/**
+ * WooCommerce success message
+ */
+var wc_success_message = '.woocommerce-message';
+generate_colors_live_update( 'wc_success_message_background', wc_success_message, 'background-color' );
+generate_colors_live_update( 'wc_success_message_text', wc_success_message + ', div.woocommerce-message a.button, div.woocommerce-message a.button:focus, div.woocommerce-message a.button:hover, div.woocommerce-message a, div.woocommerce-message a:focus, div.woocommerce-message a:hover', 'color' );
+
+/**
+ * WooCommerce info message
+ */
+var wc_info_message = '.woocommerce-info';
+generate_colors_live_update( 'wc_info_message_background', wc_info_message, 'background-color' );
+generate_colors_live_update( 'wc_info_message_text', wc_info_message + ', div.woocommerce-info a.button, div.woocommerce-info a.button:focus, div.woocommerce-info a.button:hover, div.woocommerce-info a, div.woocommerce-info a:focus, div.woocommerce-info a:hover', 'color' );
+
+/**
+ * WooCommerce error message
+ */
+var wc_error_message = '.woocommerce-error';
+generate_colors_live_update( 'wc_error_message_background', wc_error_message, 'background-color' );
+generate_colors_live_update( 'wc_error_message_text', wc_error_message + ', div.woocommerce-error a.button, div.woocommerce-error a.button:focus, div.woocommerce-error a.button:hover, div.woocommerce-error a, div.woocommerce-error a:focus, div.woocommerce-error a:hover', 'color' );
+
+/**
+ * Menu Mini Cart
+ */
+generate_colors_live_update( 'wc_mini_cart_background_color', '#wc-mini-cart', 'background-color' );
+generate_colors_live_update( 'wc_mini_cart_text_color', '#wc-mini-cart,#wc-mini-cart a:not(.button), #wc-mini-cart a.remove', 'color' );
+
+generate_colors_live_update( 'wc_mini_cart_button_background', '#wc-mini-cart .button.checkout', 'background-color' );
+generate_colors_live_update( 'wc_mini_cart_button_text', '#wc-mini-cart .button.checkout', 'color' );
+
+generate_colors_live_update( 'wc_mini_cart_button_background_hover', '#wc-mini-cart .button.checkout:hover, #wc-mini-cart .button.checkout:focus, #wc-mini-cart .button.checkout:active', 'background-color' );
+generate_colors_live_update( 'wc_mini_cart_button_text_hover', '#wc-mini-cart .button.checkout:hover, #wc-mini-cart .button.checkout:focus, #wc-mini-cart .button.checkout:active', 'color' );
+
+/**
+ * Sticky panel cart button
+ */
+ generate_colors_live_update( 'wc_panel_cart_background_color', '.add-to-cart-panel', 'background-color' );
+ generate_colors_live_update( 'wc_panel_cart_text_color', '.add-to-cart-panel, .add-to-cart-panel a:not(.button)', 'color' );
+
+ generate_colors_live_update( 'wc_panel_cart_button_background', '#wc-sticky-cart-panel .button', 'background-color' );
+ generate_colors_live_update( 'wc_panel_cart_button_text', '#wc-sticky-cart-panel .button', 'color' );
+
+ generate_colors_live_update( 'wc_panel_cart_button_background_hover', '#wc-sticky-cart-panel .button:hover, #wc-sticky-cart-panel .button:focus, #wc-sticky-cart-panel .button:active', 'background-color' );
+ generate_colors_live_update( 'wc_panel_cart_button_text_hover', '#wc-sticky-cart-panel .button:hover, #wc-sticky-cart-panel .button:focus, #wc-sticky-cart-panel .button:active', 'color' );
+
+/**
+ * Price slider bar
+ */
+generate_colors_live_update( 'wc_price_slider_background_color', '.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content', 'background-color' );
+generate_colors_live_update( 'wc_price_slider_bar_color', '.woocommerce .widget_price_filter .ui-slider .ui-slider-range, .woocommerce .widget_price_filter .ui-slider .ui-slider-handle', 'background-color' );
+
+// Archive product description text
+wp.customize( 'generate_settings[text_color]', function( value ) {
+ value.bind( function( newval ) {
+ if ( ! wp.customize.value('generate_settings[content_text_color]')() ) {
+ if ( jQuery( 'style#wc_desc_color' ).length ) {
+ jQuery( 'style#wc_desc_color' ).html( '.woocommerce-product-details__short-description{color:' + newval + ';}' );
+ } else {
+ jQuery( 'head' ).append( '' );
+ setTimeout(function() {
+ jQuery( 'style#wc_desc_color' ).not( ':last' ).remove();
+ }, 1000);
+ }
+ }
+ } );
+} );
+
+wp.customize( 'generate_settings[content_text_color]', function( value ) {
+ value.bind( function( newval ) {
+ if ( '' == newval ) {
+ newval = wp.customize.value('generate_settings[text_color]')();
+ }
+ if ( jQuery( 'style#wc_desc_color' ).length ) {
+ jQuery( 'style#wc_desc_color' ).html( '.woocommerce-product-details__short-description{color:' + newval + ';}' );
+ } else {
+ jQuery( 'head' ).append( '' );
+ setTimeout(function() {
+ jQuery( 'style#wc_desc_color' ).not( ':last' ).remove();
+ }, 1000);
+ }
+ } );
+} );
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/secondary-nav-colors.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/secondary-nav-colors.php
new file mode 100644
index 00000000..7c3ee911
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/secondary-nav-colors.php
@@ -0,0 +1,403 @@
+get_section( 'secondary_nav_section' ) ) {
+ return;
+ }
+
+ // Bail if we don't have our color defaults.
+ if ( ! function_exists( 'generate_secondary_nav_get_defaults' ) ) {
+ return;
+ }
+
+ // Add our controls.
+ require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php';
+
+ // Get our defaults.
+ $defaults = generate_secondary_nav_get_defaults();
+
+ // Add control types so controls can be built using JS.
+ if ( method_exists( $wp_customize, 'register_control_type' ) ) {
+ $wp_customize->register_control_type( 'GeneratePress_Alpha_Color_Customize_Control' );
+ $wp_customize->register_control_type( 'GeneratePress_Title_Customize_Control' );
+ $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' );
+ }
+
+ // Get our palettes.
+ $palettes = generate_get_default_color_palettes();
+
+ // Add Secondary Navigation section.
+ $wp_customize->add_section(
+ 'secondary_navigation_color_section',
+ array(
+ 'title' => __( 'Secondary Navigation', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'priority' => 71,
+ 'panel' => 'generate_colors_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_secondary_navigation_color_shortcuts',
+ array(
+ 'section' => 'secondary_navigation_color_section',
+ 'element' => __( 'Secondary Navigation', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'secondary_nav_section',
+ 'typography' => 'secondary_font_section',
+ 'backgrounds' => 'secondary_bg_images_section',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_secondary_navigation_items',
+ array(
+ 'section' => 'secondary_navigation_color_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Parent Items', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ // Background.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[navigation_background_color]',
+ array(
+ 'default' => $defaults['navigation_background_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'secondary_navigation_background_color',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[navigation_background_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[navigation_text_color]',
+ array(
+ 'default' => $defaults['navigation_text_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'secondary_navigation_text_color',
+ array(
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[navigation_text_color]',
+ )
+ )
+ );
+
+ // Background hover.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[navigation_background_hover_color]',
+ array(
+ 'default' => $defaults['navigation_background_hover_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'secondary_navigation_background_hover_color',
+ array(
+ 'label' => __( 'Background Hover', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[navigation_background_hover_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text hover.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[navigation_text_hover_color]',
+ array(
+ 'default' => $defaults['navigation_text_hover_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'secondary_navigation_text_hover_color',
+ array(
+ 'label' => __( 'Text Hover', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[navigation_text_hover_color]',
+ )
+ )
+ );
+
+ // Background current.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[navigation_background_current_color]',
+ array(
+ 'default' => $defaults['navigation_background_current_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'secondary_navigation_background_current_color',
+ array(
+ 'label' => __( 'Background Current', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[navigation_background_current_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text current.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[navigation_text_current_color]',
+ array(
+ 'default' => $defaults['navigation_text_current_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'secondary_navigation_text_current_color',
+ array(
+ 'label' => __( 'Text Current', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[navigation_text_current_color]',
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_secondary_navigation_sub_menu_items',
+ array(
+ 'section' => 'secondary_navigation_color_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Sub-Menu Items', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ // Background.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[subnavigation_background_color]',
+ array(
+ 'default' => $defaults['subnavigation_background_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'secondary_subnavigation_background_color',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[subnavigation_background_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[subnavigation_text_color]',
+ array(
+ 'default' => $defaults['subnavigation_text_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'secondary_subnavigation_text_color',
+ array(
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[subnavigation_text_color]',
+ )
+ )
+ );
+
+ // Background hover.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[subnavigation_background_hover_color]',
+ array(
+ 'default' => $defaults['subnavigation_background_hover_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'secondary_subnavigation_background_hover_color',
+ array(
+ 'label' => __( 'Background Hover', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[subnavigation_background_hover_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text hover.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[subnavigation_text_hover_color]',
+ array(
+ 'default' => $defaults['subnavigation_text_hover_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'secondary_subnavigation_text_hover_color',
+ array(
+ 'label' => __( 'Text Hover', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[subnavigation_text_hover_color]',
+ )
+ )
+ );
+
+ // Background current.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[subnavigation_background_current_color]',
+ array(
+ 'default' => $defaults['subnavigation_background_current_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'secondary_subnavigation_background_current_color',
+ array(
+ 'label' => __( 'Background Current', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[subnavigation_background_current_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text current.
+ $wp_customize->add_setting(
+ 'generate_secondary_nav_settings[subnavigation_text_current_color]',
+ array(
+ 'default' => $defaults['subnavigation_text_current_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'secondary_subnavigation_text_current_color',
+ array(
+ 'label' => __( 'Text Current', 'gp-premium' ),
+ 'section' => 'secondary_navigation_color_section',
+ 'settings' => 'generate_secondary_nav_settings[subnavigation_text_current_color]',
+ )
+ )
+ );
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/slideout-nav-colors.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/slideout-nav-colors.php
new file mode 100644
index 00000000..f479dd6e
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/slideout-nav-colors.php
@@ -0,0 +1,400 @@
+get_section( 'menu_plus_slideout_menu' ) ) {
+ return;
+ }
+
+ // Bail if we don't have our color defaults.
+ if ( ! function_exists( 'generate_get_color_defaults' ) ) {
+ return;
+ }
+
+ // Add our controls.
+ require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php';
+
+ // Get our defaults.
+ $defaults = generate_get_color_defaults();
+
+ // Add control types so controls can be built using JS.
+ if ( method_exists( $wp_customize, 'register_control_type' ) ) {
+ $wp_customize->register_control_type( 'GeneratePress_Alpha_Color_Customize_Control' );
+ $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' );
+ }
+
+ // Get our palettes.
+ $palettes = generate_get_default_color_palettes();
+
+ // Add Secondary Navigation section.
+ $wp_customize->add_section(
+ 'slideout_color_section',
+ array(
+ 'title' => __( 'Off Canvas Panel', 'gp-premium' ),
+ 'capability' => 'edit_theme_options',
+ 'priority' => 73,
+ 'panel' => 'generate_colors_panel',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_off_canvas_color_shortcuts',
+ array(
+ 'section' => 'slideout_color_section',
+ 'element' => __( 'Off Canvas Panel', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'menu_plus_slideout_menu',
+ 'typography' => 'generate_slideout_typography',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 1,
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_slideout_navigation_items',
+ array(
+ 'section' => 'slideout_color_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Parent Menu Items', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ // Background.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_background_color]',
+ array(
+ 'default' => $defaults['slideout_background_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[slideout_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_background_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_text_color]',
+ array(
+ 'default' => $defaults['slideout_text_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[slideout_text_color]',
+ array(
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_text_color]',
+ )
+ )
+ );
+
+ // Background hover.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_background_hover_color]',
+ array(
+ 'default' => $defaults['slideout_background_hover_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[slideout_background_hover_color]',
+ array(
+ 'label' => __( 'Background Hover', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_background_hover_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text hover.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_text_hover_color]',
+ array(
+ 'default' => $defaults['slideout_text_hover_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[slideout_text_hover_color]',
+ array(
+ 'label' => __( 'Text Hover', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_text_hover_color]',
+ )
+ )
+ );
+
+ // Background current.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_background_current_color]',
+ array(
+ 'default' => $defaults['slideout_background_current_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[slideout_background_current_color]',
+ array(
+ 'label' => __( 'Background Current', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_background_current_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text current.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_text_current_color]',
+ array(
+ 'default' => $defaults['slideout_text_current_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[slideout_text_current_color]',
+ array(
+ 'label' => __( 'Text Current', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_text_current_color]',
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_slideout_navigation_sub_menu_items',
+ array(
+ 'section' => 'slideout_color_section',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Sub-Menu Items', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ // Background.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_submenu_background_color]',
+ array(
+ 'default' => $defaults['slideout_submenu_background_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[slideout_submenu_background_color]',
+ array(
+ 'label' => __( 'Background', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_submenu_background_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_submenu_text_color]',
+ array(
+ 'default' => $defaults['slideout_submenu_text_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[slideout_submenu_text_color]',
+ array(
+ 'label' => __( 'Text', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_submenu_text_color]',
+ )
+ )
+ );
+
+ // Background hover.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_submenu_background_hover_color]',
+ array(
+ 'default' => $defaults['slideout_submenu_background_hover_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[slideout_submenu_background_hover_color]',
+ array(
+ 'label' => __( 'Background Hover', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_submenu_background_hover_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text hover.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_submenu_text_hover_color]',
+ array(
+ 'default' => $defaults['slideout_submenu_text_hover_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[slideout_submenu_text_hover_color]',
+ array(
+ 'label' => __( 'Text Hover', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_submenu_text_hover_color]',
+ )
+ )
+ );
+
+ // Background current.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_submenu_background_current_color]',
+ array(
+ 'default' => $defaults['slideout_submenu_background_current_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[slideout_submenu_background_current_color]',
+ array(
+ 'label' => __( 'Background Current', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_submenu_background_current_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ // Text current.
+ $wp_customize->add_setting(
+ 'generate_settings[slideout_submenu_text_current_color]',
+ array(
+ 'default' => $defaults['slideout_submenu_text_current_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[slideout_submenu_text_current_color]',
+ array(
+ 'label' => __( 'Text Current', 'gp-premium' ),
+ 'section' => 'slideout_color_section',
+ 'settings' => 'generate_settings[slideout_submenu_text_current_color]',
+ )
+ )
+ );
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/woocommerce-colors.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/woocommerce-colors.php
new file mode 100644
index 00000000..6c453815
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/woocommerce-colors.php
@@ -0,0 +1,911 @@
+get_section( 'generate_woocommerce_colors' ) ) {
+ return;
+ }
+
+ if ( ! function_exists( 'generate_get_color_defaults' ) ) {
+ return;
+ }
+
+ // Add our controls.
+ require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php';
+
+ // Get our defaults.
+ $defaults = generate_get_color_defaults();
+
+ // Add control types so controls can be built using JS.
+ if ( method_exists( $wp_customize, 'register_control_type' ) ) {
+ $wp_customize->register_control_type( 'GeneratePress_Alpha_Color_Customize_Control' );
+ $wp_customize->register_control_type( 'GeneratePress_Title_Customize_Control' );
+ $wp_customize->register_control_type( 'GeneratePress_Information_Customize_Control' );
+ $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' );
+ }
+
+ // Get our palettes.
+ $palettes = generate_get_default_color_palettes();
+
+ $wp_customize->add_control(
+ new GeneratePress_Section_Shortcut_Control(
+ $wp_customize,
+ 'generate_woocommerce_color_shortcuts',
+ array(
+ 'section' => 'generate_woocommerce_colors',
+ 'element' => __( 'WooCommerce', 'gp-premium' ),
+ 'shortcuts' => array(
+ 'layout' => 'generate_woocommerce_layout',
+ 'typography' => 'generate_woocommerce_typography',
+ ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ 'priority' => 0,
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_woocommerce_button_title',
+ array(
+ 'section' => 'generate_woocommerce_colors',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Buttons', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Information_Customize_Control(
+ $wp_customize,
+ 'generate_woocommerce_primary_button_message',
+ array(
+ 'section' => 'generate_woocommerce_colors',
+ 'label' => __( 'Primary Button Colors', 'gp-premium' ),
+ 'description' => __( 'Primary button colors can be set here .', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_alt_button_background]',
+ array(
+ 'default' => $defaults['wc_alt_button_background'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[wc_alt_button_background]',
+ array(
+ 'label' => __( 'Alt Button Background', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_alt_button_background]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_alt_button_background_hover]',
+ array(
+ 'default' => $defaults['wc_alt_button_background_hover'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[wc_alt_button_background_hover]',
+ array(
+ 'label' => __( 'Alt Button Background Hover', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_alt_button_background_hover]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_alt_button_text]',
+ array(
+ 'default' => $defaults['wc_alt_button_text'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_alt_button_text]',
+ array(
+ 'label' => __( 'Alt Button Text', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_alt_button_text]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_alt_button_text_hover]',
+ array(
+ 'default' => $defaults['wc_alt_button_text_hover'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_alt_button_text_hover]',
+ array(
+ 'label' => __( 'Alt Button Text Hover', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_alt_button_text_hover]',
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_woocommerce_product_title',
+ array(
+ 'section' => 'generate_woocommerce_colors',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Products', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_product_title_color]',
+ array(
+ 'default' => $defaults['wc_product_title_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_product_title_color]',
+ array(
+ 'label' => __( 'Product Title', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_product_title_color]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_product_title_color_hover]',
+ array(
+ 'default' => $defaults['wc_product_title_color_hover'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_product_title_color_hover]',
+ array(
+ 'label' => __( 'Product Title Hover', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_product_title_color_hover]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_rating_stars]',
+ array(
+ 'default' => $defaults['wc_rating_stars'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'transport' => '',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[wc_rating_stars]',
+ array(
+ 'label' => __( 'Star Ratings', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_rating_stars]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_sale_sticker_background]',
+ array(
+ 'default' => $defaults['wc_sale_sticker_background'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[wc_sale_sticker_background]',
+ array(
+ 'label' => __( 'Sale Sticker Background', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_sale_sticker_background]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_sale_sticker_text]',
+ array(
+ 'default' => $defaults['wc_sale_sticker_text'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_sale_sticker_text]',
+ array(
+ 'label' => __( 'Sale Sticker Text', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_sale_sticker_text]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_price_color]',
+ array(
+ 'default' => $defaults['wc_price_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_price_color]',
+ array(
+ 'label' => __( 'Price', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_price_color]',
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_woocommerce_panel_cart_title',
+ array(
+ 'section' => 'generate_woocommerce_colors',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Sticky Panel Cart', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_panel_cart_background_color]',
+ array(
+ 'default' => $defaults['wc_panel_cart_background_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[wc_panel_cart_background_color]',
+ array(
+ 'label' => __( 'Background Color', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_panel_cart_background_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_panel_cart_text_color]',
+ array(
+ 'default' => $defaults['wc_panel_cart_text_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_panel_cart_text_color]',
+ array(
+ 'label' => __( 'Text Color', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_panel_cart_text_color]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_panel_cart_button_background]',
+ array(
+ 'default' => $defaults['wc_panel_cart_button_background'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_panel_cart_button_background]',
+ array(
+ 'label' => __( 'Button Background', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_panel_cart_button_background]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_panel_cart_button_background_hover]',
+ array(
+ 'default' => $defaults['wc_panel_cart_button_background_hover'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_panel_cart_button_background_hover]',
+ array(
+ 'label' => __( 'Button Background Hover', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_panel_cart_button_background_hover]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_panel_cart_button_text]',
+ array(
+ 'default' => $defaults['wc_panel_cart_button_text'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_panel_cart_button_text]',
+ array(
+ 'label' => __( 'Button Text', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_panel_cart_button_text]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_panel_cart_button_text_hover]',
+ array(
+ 'default' => $defaults['wc_panel_cart_button_text_hover'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_panel_cart_button_text_hover]',
+ array(
+ 'label' => __( 'Button Text Hover', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_panel_cart_button_text_hover]',
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_woocommerce_mini_cart_title',
+ array(
+ 'section' => 'generate_woocommerce_colors',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Menu Mini Cart', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_mini_cart_background_color]',
+ array(
+ 'default' => $defaults['wc_mini_cart_background_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[wc_mini_cart_background_color]',
+ array(
+ 'label' => __( 'Cart Background Color', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_mini_cart_background_color]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_mini_cart_text_color]',
+ array(
+ 'default' => $defaults['wc_mini_cart_text_color'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_mini_cart_text_color]',
+ array(
+ 'label' => __( 'Cart Text Color', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_mini_cart_text_color]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_mini_cart_button_background]',
+ array(
+ 'default' => $defaults['wc_mini_cart_button_background'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_mini_cart_button_background]',
+ array(
+ 'label' => __( 'Button Background', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_mini_cart_button_background]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_mini_cart_button_background_hover]',
+ array(
+ 'default' => $defaults['wc_mini_cart_button_background_hover'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_mini_cart_button_background_hover]',
+ array(
+ 'label' => __( 'Button Background Hover', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_mini_cart_button_background_hover]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_mini_cart_button_text]',
+ array(
+ 'default' => $defaults['wc_mini_cart_button_text'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_mini_cart_button_text]',
+ array(
+ 'label' => __( 'Button Text', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_mini_cart_button_text]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_mini_cart_button_text_hover]',
+ array(
+ 'default' => $defaults['wc_mini_cart_button_text_hover'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_mini_cart_button_text_hover]',
+ array(
+ 'label' => __( 'Button Text Hover', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_mini_cart_button_text_hover]',
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_woocommerce_price_slider_title',
+ array(
+ 'section' => 'generate_woocommerce_colors',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Price Slider Widget', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_price_slider_background_color]',
+ array(
+ 'default' => $defaults['wc_price_slider_background_color'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_price_slider_background_color]',
+ array(
+ 'label' => __( 'Slider Background Color', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_price_slider_background_color]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_price_slider_bar_color]',
+ array(
+ 'default' => $defaults['wc_price_slider_bar_color'],
+ 'type' => 'option',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_price_slider_bar_color]',
+ array(
+ 'label' => __( 'Slider Bar Color', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_price_slider_bar_color]',
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_woocommerce_product_tabs_title',
+ array(
+ 'section' => 'generate_woocommerce_colors',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Product Tabs', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_product_tab]',
+ array(
+ 'default' => $defaults['wc_product_tab'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_product_tab]',
+ array(
+ 'label' => __( 'Product Tab Text', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_product_tab]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_product_tab_highlight]',
+ array(
+ 'default' => $defaults['wc_product_tab_highlight'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_product_tab_highlight]',
+ array(
+ 'label' => __( 'Product Tab Active', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_product_tab_highlight]',
+ )
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Title_Customize_Control(
+ $wp_customize,
+ 'generate_woocommerce_messages_title',
+ array(
+ 'section' => 'generate_woocommerce_colors',
+ 'type' => 'generatepress-customizer-title',
+ 'title' => __( 'Messages', 'gp-premium' ),
+ 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_success_message_background]',
+ array(
+ 'default' => $defaults['wc_success_message_background'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[wc_success_message_background]',
+ array(
+ 'label' => __( 'Success Message Background', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_success_message_background]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_success_message_text]',
+ array(
+ 'default' => $defaults['wc_success_message_text'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_success_message_text]',
+ array(
+ 'label' => __( 'Success Message Text', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_success_message_text]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_info_message_background]',
+ array(
+ 'default' => $defaults['wc_info_message_background'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[wc_info_message_background]',
+ array(
+ 'label' => __( 'Info Message Background', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_info_message_background]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_info_message_text]',
+ array(
+ 'default' => $defaults['wc_info_message_text'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_info_message_text]',
+ array(
+ 'label' => __( 'Info Message Text', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_info_message_text]',
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_error_message_background]',
+ array(
+ 'default' => $defaults['wc_error_message_background'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'transport' => 'postMessage',
+ 'sanitize_callback' => 'generate_premium_sanitize_rgba',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Alpha_Color_Customize_Control(
+ $wp_customize,
+ 'generate_settings[wc_error_message_background]',
+ array(
+ 'label' => __( 'Error Message Background', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_error_message_background]',
+ 'palette' => $palettes,
+ )
+ )
+ );
+
+ $wp_customize->add_setting(
+ 'generate_settings[wc_error_message_text]',
+ array(
+ 'default' => $defaults['wc_error_message_text'],
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'generate_premium_sanitize_hex_color',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new WP_Customize_Color_Control(
+ $wp_customize,
+ 'generate_settings[wc_error_message_text]',
+ array(
+ 'label' => __( 'Error Message Text', 'gp-premium' ),
+ 'section' => 'generate_woocommerce_colors',
+ 'settings' => 'generate_settings[wc_error_message_text]',
+ )
+ )
+ );
+
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/generate-colors.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/generate-colors.php
new file mode 100644
index 00000000..a90e5c4c
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/generate-colors.php
@@ -0,0 +1,20 @@
+register_control_type( 'GeneratePress_Copyright_Customize_Control' );
+ }
+
+ $wp_customize->add_setting(
+ 'generate_copyright',
+ array(
+ 'default' => '',
+ 'type' => 'theme_mod',
+ 'sanitize_callback' => 'wp_kses_post',
+ 'transport' => 'postMessage',
+ )
+ );
+
+ $wp_customize->add_control(
+ new GeneratePress_Copyright_Customize_Control(
+ $wp_customize,
+ 'generate_copyright',
+ array(
+ 'label' => __( 'Copyright', 'gp-premium' ),
+ 'section' => 'generate_layout_footer',
+ 'settings' => 'generate_copyright',
+ 'priority' => 500,
+ )
+ )
+ );
+
+ // Initiate selective refresh.
+ if ( isset( $wp_customize->selective_refresh ) ) {
+ $wp_customize->selective_refresh->add_partial(
+ 'generate_copyright',
+ array(
+ 'selector' => '.copyright-bar',
+ 'settings' => array( 'generate_copyright' ),
+ 'render_callback' => 'generate_copyright_selective_refresh',
+ )
+ );
+ }
+ }
+}
+
+if ( ! function_exists( 'generate_copyright_selective_refresh' ) ) {
+ /**
+ * Return our copyright on selective refresh
+ */
+ function generate_copyright_selective_refresh() {
+ $options = array(
+ '%current_year%',
+ '%copy%',
+ );
+
+ $replace = array(
+ date( 'Y' ), // phpcs:ignore -- prefer date().
+ '©',
+ );
+
+ $new_copyright = get_theme_mod( 'generate_copyright' );
+ $new_copyright = str_replace( $options, $replace, get_theme_mod( 'generate_copyright' ) );
+
+ return do_shortcode( $new_copyright );
+ }
+}
+
+if ( ! function_exists( 'generate_copyright_remove_default' ) ) {
+ add_action( 'wp', 'generate_copyright_remove_default' );
+ /**
+ * Remove the default copyright.
+ *
+ * @since 0.1
+ * @deprecated GP 1.3.42
+ */
+ function generate_copyright_remove_default() {
+ // As of 1.3.42, we no longer need to do this.
+ // We use a nice little filter instead.
+ if ( ! function_exists( 'generate_add_login_attribution' ) ) {
+ return;
+ }
+
+ if ( get_theme_mod( 'generate_copyright' ) && '' !== get_theme_mod( 'generate_copyright' ) ) {
+ remove_action( 'generate_credits', 'generate_add_footer_info' );
+ remove_action( 'generate_copyright_line', 'generate_add_login_attribution' );
+ }
+ }
+}
+
+if ( ! function_exists( 'generate_copyright_add_custom' ) ) {
+ add_action( 'generate_credits', 'generate_copyright_add_custom' );
+ /**
+ * Add the custom copyright.
+ *
+ * @since 0.1
+ * @deprecated GP 1.3.42
+ */
+ function generate_copyright_add_custom() {
+ // As of 1.3.42, we no longer need to do this.
+ // We use a nice little filter instead.
+ if ( ! function_exists( 'generate_add_login_attribution' ) ) {
+ return;
+ }
+
+ $options = array(
+ '%current_year%',
+ '%copy%',
+ );
+
+ $replace = array(
+ date( 'Y' ), // phpcs:ignore -- prefer date().
+ '©',
+ );
+
+ $new_copyright = get_theme_mod( 'generate_copyright' );
+ $new_copyright = str_replace( $options, $replace, get_theme_mod( 'generate_copyright' ) );
+
+ if ( get_theme_mod( 'generate_copyright' ) && '' !== get_theme_mod( 'generate_copyright' ) ) {
+ echo do_shortcode( $new_copyright );
+ }
+ }
+}
+
+if ( ! function_exists( 'generate_apply_custom_copyright' ) ) {
+ add_filter( 'generate_copyright', 'generate_apply_custom_copyright' );
+ /**
+ * Add the custom copyright
+ *
+ * @since 1.2.92
+ * @param string $copyright The copyright value.
+ */
+ function generate_apply_custom_copyright( $copyright ) {
+ // This will only work if GP >= 1.3.42 and the below function doesn't exist.
+ if ( function_exists( 'generate_add_login_attribution' ) ) {
+ return;
+ }
+
+ $options = array(
+ '%current_year%',
+ '%copy%',
+ );
+
+ $replace = array(
+ date( 'Y' ), // phpcs:ignore -- prefer date().
+ '©',
+ );
+
+ $new_copyright = get_theme_mod( 'generate_copyright' );
+ $new_copyright = str_replace( $options, $replace, get_theme_mod( 'generate_copyright' ) );
+
+ if ( get_theme_mod( 'generate_copyright' ) && '' !== get_theme_mod( 'generate_copyright' ) ) {
+ return do_shortcode( $new_copyright );
+ }
+
+ return $copyright;
+
+ }
+}
+
+if ( ! function_exists( 'generate_copyright_customizer_live_preview' ) ) {
+ add_action( 'customize_preview_init', 'generate_copyright_customizer_live_preview' );
+ /**
+ * Add our live preview
+ */
+ function generate_copyright_customizer_live_preview() {
+ wp_enqueue_script(
+ 'generate-copyright-customizer',
+ plugin_dir_url( __FILE__ ) . 'js/customizer.js',
+ array( 'jquery', 'customize-preview' ),
+ GENERATE_COPYRIGHT_VERSION,
+ true
+ );
+ }
+}
+
+if ( ! function_exists( 'generate_update_copyright' ) ) {
+ add_action( 'admin_init', 'generate_update_copyright' );
+ /**
+ * Our copyright use to have it's own setting
+ * If we have the old setting, move it into our theme_mod
+ */
+ function generate_update_copyright() {
+ // If we already have a custom logo, bail.
+ if ( get_theme_mod( 'generate_copyright' ) ) {
+ return;
+ }
+
+ // Get the old logo value.
+ $old_value = get_option( 'gen_custom_copyright' );
+
+ // If there's no old value, bail.
+ if ( empty( $old_value ) ) {
+ return;
+ }
+
+ // Now let's update the new logo setting with our ID.
+ set_theme_mod( 'generate_copyright', $old_value );
+
+ // Got our custom logo? Time to delete the old value.
+ if ( get_theme_mod( 'generate_copyright' ) ) {
+ delete_option( 'gen_custom_copyright' );
+ }
+ }
+}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/functions/js/customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/functions/js/customizer.js
new file mode 100644
index 00000000..fdd64115
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/functions/js/customizer.js
@@ -0,0 +1,18 @@
+/**
+ * Theme Customizer enhancements for a better user experience.
+ *
+ * Contains handlers to make Theme Customizer preview reload changes asynchronously.
+ */
+
+( function( $ ) {
+ // Update the site title in real time...
+ wp.customize( 'generate_copyright', function( value ) {
+ value.bind( function( newval ) {
+ if ( $( '.copyright-bar' ).length ) {
+ $( '.copyright-bar' ).html( newval );
+ } else {
+ $( '.inside-site-info' ).html( newval );
+ }
+ } );
+ } );
+}( jQuery ) );
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/generate-copyright.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/generate-copyright.php
new file mode 100644
index 00000000..2b9ce0b3
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/generate-copyright.php
@@ -0,0 +1,20 @@
+ID, '_generate-disable-header', true );
+ $disable_nav = get_post_meta( $post->ID, '_generate-disable-nav', true );
+ $disable_secondary_nav = get_post_meta( $post->ID, '_generate-disable-secondary-nav', true );
+ $disable_post_image = get_post_meta( $post->ID, '_generate-disable-post-image', true );
+ $disable_headline = get_post_meta( $post->ID, '_generate-disable-headline', true );
+ $disable_footer = get_post_meta( $post->ID, '_generate-disable-footer', true );
+ }
+
+ $return = '';
+
+ if ( ! empty( $disable_header ) && false !== $disable_header ) {
+ $return = '.site-header {display:none}';
+ }
+
+ if ( ! empty( $disable_nav ) && false !== $disable_nav ) {
+ $return .= '#site-navigation,.navigation-clone, #mobile-header {display:none !important}';
+ }
+
+ if ( ! empty( $disable_secondary_nav ) && false !== $disable_secondary_nav ) {
+ $return .= '#secondary-navigation {display:none}';
+ }
+
+ if ( ! empty( $disable_post_image ) && false !== $disable_post_image ) {
+ $return .= '.generate-page-header, .page-header-image, .page-header-image-single {display:none}';
+ }
+
+ $need_css_removal = true;
+
+ if ( defined( 'GENERATE_VERSION' ) && version_compare( GENERATE_VERSION, '3.0.0-alpha.1', '>=' ) ) {
+ $need_css_removal = false;
+ }
+
+ if ( $need_css_removal && ! empty( $disable_headline ) && false !== $disable_headline && ! is_single() ) {
+ $return .= '.entry-header {display:none} .page-content, .entry-content, .entry-summary {margin-top:0}';
+ }
+
+ if ( ! empty( $disable_footer ) && false !== $disable_footer ) {
+ $return .= '.site-footer {display:none}';
+ }
+
+ return $return;
+ }
+}
+
+if ( ! function_exists( 'generate_de_scripts' ) ) {
+ add_action( 'wp_enqueue_scripts', 'generate_de_scripts', 50 );
+ /**
+ * Enqueue scripts and styles
+ */
+ function generate_de_scripts() {
+ wp_add_inline_style( 'generate-style', generate_disable_elements() );
+ }
+}
+
+if ( ! function_exists( 'generate_add_de_meta_box' ) ) {
+ add_action( 'add_meta_boxes', 'generate_add_de_meta_box', 50 );
+ /**
+ * Generate the layout metabox.
+ *
+ * @since 0.1
+ */
+ function generate_add_de_meta_box() {
+ // Set user role - make filterable.
+ $allowed = apply_filters( 'generate_metabox_capability', 'edit_theme_options' );
+
+ // If not an administrator, don't show the metabox.
+ if ( ! current_user_can( $allowed ) ) {
+ return;
+ }
+
+ if ( defined( 'GENERATE_LAYOUT_META_BOX' ) ) {
+ return;
+ }
+
+ $args = array( 'public' => true );
+ $post_types = get_post_types( $args );
+ foreach ( $post_types as $type ) {
+ if ( 'attachment' !== $type ) {
+ add_meta_box(
+ 'generate_de_meta_box',
+ __( 'Disable Elements', 'gp-premium' ),
+ 'generate_show_de_meta_box',
+ $type,
+ 'side',
+ 'default'
+ );
+ }
+ }
+ }
+}
+
+if ( ! function_exists( 'generate_show_de_meta_box' ) ) {
+ /**
+ * Outputs the content of the metabox.
+ *
+ * @param object $post The post object.
+ */
+ function generate_show_de_meta_box( $post ) {
+ wp_nonce_field( basename( __FILE__ ), 'generate_de_nonce' );
+ $stored_meta = get_post_meta( $post->ID );
+ $stored_meta['_generate-disable-header'][0] = ( isset( $stored_meta['_generate-disable-header'][0] ) ) ? $stored_meta['_generate-disable-header'][0] : '';
+ $stored_meta['_generate-disable-nav'][0] = ( isset( $stored_meta['_generate-disable-nav'][0] ) ) ? $stored_meta['_generate-disable-nav'][0] : '';
+ $stored_meta['_generate-disable-secondary-nav'][0] = ( isset( $stored_meta['_generate-disable-secondary-nav'][0] ) ) ? $stored_meta['_generate-disable-secondary-nav'][0] : '';
+ $stored_meta['_generate-disable-post-image'][0] = ( isset( $stored_meta['_generate-disable-post-image'][0] ) ) ? $stored_meta['_generate-disable-post-image'][0] : '';
+ $stored_meta['_generate-disable-headline'][0] = ( isset( $stored_meta['_generate-disable-headline'][0] ) ) ? $stored_meta['_generate-disable-headline'][0] : '';
+ $stored_meta['_generate-disable-footer'][0] = ( isset( $stored_meta['_generate-disable-footer'][0] ) ) ? $stored_meta['_generate-disable-footer'][0] : '';
+ $stored_meta['_generate-disable-top-bar'][0] = ( isset( $stored_meta['_generate-disable-top-bar'][0] ) ) ? $stored_meta['_generate-disable-top-bar'][0] : '';
+ ?>
+
+
+
+
+
+ >
+
+
+
+
+
+ >
+
+
+
+
+ >
+
+
+
+
+
+ >
+
+
+
+
+
+ >
+
+
+
+
+ >
+
+
+
+
+ >
+
+
+
+
+
+ ID, '_generate-disable-top-bar', true );
+ $disable_header = get_post_meta( $post->ID, '_generate-disable-header', true );
+ $disable_mobile_header = get_post_meta( $post->ID, '_generate-disable-mobile-header', true );
+ $disable_nav = get_post_meta( $post->ID, '_generate-disable-nav', true );
+ $disable_headline = get_post_meta( $post->ID, '_generate-disable-headline', true );
+ $disable_footer = get_post_meta( $post->ID, '_generate-disable-footer', true );
+ }
+
+ // Remove the top bar.
+ if ( ! empty( $disable_top_bar ) && false !== $disable_top_bar && function_exists( 'generate_top_bar' ) ) {
+ remove_action( 'generate_before_header', 'generate_top_bar', 5 );
+ remove_action( 'generate_inside_secondary_navigation', 'generate_secondary_nav_top_bar_widget', 5 );
+ }
+
+ // Remove the header.
+ if ( ! empty( $disable_header ) && false !== $disable_header && function_exists( 'generate_construct_header' ) ) {
+ remove_action( 'generate_header', 'generate_construct_header' );
+ }
+
+ // Remove the mobile header.
+ if ( ! empty( $disable_mobile_header ) && false !== $disable_mobile_header && function_exists( 'generate_menu_plus_mobile_header' ) ) {
+ remove_action( 'generate_after_header', 'generate_menu_plus_mobile_header', 5 );
+ }
+
+ // Remove the navigation.
+ if ( ! empty( $disable_nav ) && false !== $disable_nav && function_exists( 'generate_get_navigation_location' ) ) {
+ add_filter( 'generate_navigation_location', '__return_false', 20 );
+ add_filter( 'generate_disable_mobile_header_menu', '__return_true' );
+ }
+
+ // Remove the title.
+ if ( ! empty( $disable_headline ) && false !== $disable_headline && function_exists( 'generate_show_title' ) ) {
+ add_filter( 'generate_show_title', '__return_false' );
+ }
+
+ // Remove the footer.
+ if ( ! empty( $disable_footer ) && false !== $disable_footer ) {
+ if ( function_exists( 'generate_construct_footer_widgets' ) ) {
+ remove_action( 'generate_footer', 'generate_construct_footer_widgets', 5 );
+ }
+
+ if ( function_exists( 'generate_construct_footer' ) ) {
+ remove_action( 'generate_footer', 'generate_construct_footer' );
+ }
+ }
+ }
+}
+
+add_action( 'generate_layout_disable_elements_section', 'generate_premium_disable_elements_options' );
+/**
+ * Add the meta box options to the Layout meta box in the new GP
+ *
+ * @since 1.4
+ * @param array $stored_meta Existing meta data.
+ */
+function generate_premium_disable_elements_options( $stored_meta ) {
+ $stored_meta['_generate-disable-header'][0] = ( isset( $stored_meta['_generate-disable-header'][0] ) ) ? $stored_meta['_generate-disable-header'][0] : '';
+ $stored_meta['_generate-disable-mobile-header'][0] = ( isset( $stored_meta['_generate-disable-mobile-header'][0] ) ) ? $stored_meta['_generate-disable-mobile-header'][0] : '';
+ $stored_meta['_generate-disable-nav'][0] = ( isset( $stored_meta['_generate-disable-nav'][0] ) ) ? $stored_meta['_generate-disable-nav'][0] : '';
+ $stored_meta['_generate-disable-secondary-nav'][0] = ( isset( $stored_meta['_generate-disable-secondary-nav'][0] ) ) ? $stored_meta['_generate-disable-secondary-nav'][0] : '';
+ $stored_meta['_generate-disable-post-image'][0] = ( isset( $stored_meta['_generate-disable-post-image'][0] ) ) ? $stored_meta['_generate-disable-post-image'][0] : '';
+ $stored_meta['_generate-disable-headline'][0] = ( isset( $stored_meta['_generate-disable-headline'][0] ) ) ? $stored_meta['_generate-disable-headline'][0] : '';
+ $stored_meta['_generate-disable-footer'][0] = ( isset( $stored_meta['_generate-disable-footer'][0] ) ) ? $stored_meta['_generate-disable-footer'][0] : '';
+ $stored_meta['_generate-disable-top-bar'][0] = ( isset( $stored_meta['_generate-disable-top-bar'][0] ) ) ? $stored_meta['_generate-disable-top-bar'][0] : '';
+ ?>
+
+
+
+ >
+
+
+
+
+
+ >
+
+
+
+
+
+ >
+
+
+
+
+
+ >
+
+
+
+
+
+ >
+
+
+
+
+
+ >
+
+
+
+
+ >
+
+
+
+
+ >
+
+
+
+ array('lodash', 'react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-dom-ready', 'wp-edit-post', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-plugins', 'wp-server-side-render'), 'version' => '332fd82d1af7a4ec17e6');
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.css
new file mode 100644
index 00000000..03b033bb
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.css
@@ -0,0 +1,6 @@
+.inline-post-meta-area.block-editor-block-list__layout,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout{align-items:center;display:flex}.inline-post-meta-area.block-editor-block-list__layout>.wp-block.block-list-appender,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout>.wp-block.block-list-appender,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout>.wp-block.block-list-appender{margin-left:20px}.inline-post-meta-area.block-editor-block-list__layout>.wp-block-image,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout>.wp-block-image,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout>.wp-block-image{line-height:0}.inline-post-meta-area.block-editor-block-list__layout>.wp-block-image figcaption,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout>.wp-block-image figcaption,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout>.wp-block-image figcaption{display:none}.inline-post-meta-area .wp-block{margin-left:0;margin-right:0}.gpp-dynamic-container-bg-dropdown .components-popover__content{width:275px}.gpp-dynamic-container-bg-dropdown .components-popover__content .components-base-control:not(:last-child){margin-bottom:20px}.gpp-dynamic-container-bg-dropdown .components-popover__content .components-base-control:last-child .components-base-control__field{margin-bottom:0}.gpp-dynamic-container-bg-dropdown .components-popover__content .components-base-control:last-child .components-base-control__help{margin-top:3px}
+.gpp-dynamic-headline-text-dropdown .components-popover__content{width:275px}.gpp-dynamic-headline-text-dropdown .components-popover__content .components-base-control:not(:last-child){margin-bottom:20px}.gpp-dynamic-headline-text-dropdown .components-popover__content .components-base-control:last-child .components-base-control__field{margin-bottom:0}.gpp-dynamic-headline-text-dropdown .components-popover__content .components-base-control:last-child .components-base-control__help{margin-top:3px}.gpp-blocks-dynamic-text-replace-field{display:none}.gpp-block-dynamic-year .components-base-control__help{margin-top:2px}
+.wp-block[data-type="generatepress/dynamic-content"]{margin-bottom:0;margin-top:0}
+.wp-block[data-type="generatepress/dynamic-image"]{color:#fff;margin-bottom:0;margin-top:0}.wp-block[data-type="generatepress/dynamic-image"] .components-gpp-dynamic-image-placeholder__label{align-items:center;bottom:0;color:#fff;display:flex;font-size:1em;justify-content:center;left:0;position:absolute;right:0;top:0}.wp-block[data-type="generatepress/dynamic-image"] .components-gpp-dynamic-image-placeholder__label>.gpp-dynamic-featured-image__label{margin-left:10px}.wp-block[data-type="generatepress/dynamic-image"] .gpp-dynamic-image-placeholder{background:#000;vertical-align:middle}.wp-block[data-type="generatepress/dynamic-image"] .components-placeholder{width:100%}.wp-block[data-type="generatepress/dynamic-image"] .gpp-dynamic-image-preview{display:inline-block;position:relative}.wp-block[data-type="generatepress/dynamic-image"] .dynamic-author-image-rounded{border-radius:100%}
+.components-generatepress-units-control-header__units{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px}.components-generatepress-control__units .components-generatepress-control-buttons__units button.components-button{background:#fff;border:0;border-radius:0!important;box-shadow:none!important;color:#929da7;font-size:10px;height:auto;line-height:20px;padding:0 5px;position:relative;text-align:center;text-shadow:none}.components-generatepress-control__units .components-generatepress-control-buttons__units button.components-button.is-primary{background:#fff!important;color:#000!important;cursor:default;font-weight:700;z-index:1}
+.editor-styles-wrapper .is-root-container>.wp-block{margin-left:auto;margin-right:auto;max-width:var(--gp-block-element-width)}.left-sidebar-block-type div:not(.block-editor-inner-blocks)>.block-editor-block-list__layout,.right-sidebar-block-type div:not(.block-editor-inner-blocks)>.block-editor-block-list__layout{padding:10px}.gpp-block-element-panel>.components-base-control{margin-bottom:20px}.gpp-block-element-panel .components-notice,.gpp-block-element-panel .components-notice .components-notice__content{margin:0}.gpp-element-panel-label .components-panel__body-toggle.components-button{display:flex;flex-direction:row-reverse;justify-content:flex-end}.gpp-element-panel-label .components-panel__body-toggle.components-button svg.components-panel__icon{margin:0 10px 0 0}button.gpp-block-elements-template-button{background:#fff;border:1px solid #ddd;border-radius:5px;cursor:pointer;margin:0 0 10px;padding:5px}button.gpp-block-elements-template-button:hover{border-color:var(--wp-admin-theme-color)}button.gpp-block-elements-template-button .gpp-block-template-label{color:#888;font-size:13px;padding:5px}.element-has-parent #generate_premium_elements{display:none}.gpp-block-element-template-panel{background:#fafafa}.gpp-hook-select .gpp-block-element-search-select{position:relative;width:100%}.gpp-hook-select .components-text-control__input{background:#fff url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E") no-repeat right 5px top 55%;background-size:13px 13px;position:relative;z-index:1}.gpp-hook-select .select-search__select{background:#fff;border:1px solid #ddd}.gpp-hook-select .select-search__options{list-style:none}.gpp-hook-select .select-search__row:not(:first-child){border-top:1px solid #eee}.gpp-hook-select .select-search__row{margin:0}.gpp-hook-select .select-search__not-found,.gpp-hook-select .select-search__option{background:#fff;border:none;cursor:pointer;display:block;height:36px;margin:0;outline:none;padding:0 10px;text-align:left;width:100%}.gpp-hook-select .select-search__option.select-search__is-selected{background:#007cba;color:#fff}.gpp-hook-select .select-search__option.select-search__is-highlighted,.gpp-hook-select .select-search__option:not(.select-search__is-selected):hover{background:#fafafa}.gpp-hook-select .select-search__option.select-search__is-highlighted.select-search__is-selected,.gpp-hook-select .select-search__option.select-search__is-selected:hover{background:#007cba;color:#fff}.gpp-hook-select .select-search__group-header{background:#eee;font-size:10px;padding:8px 10px;text-transform:uppercase}.gpp-hook-select .gpp-block-element-search-select.is-disabled{opacity:.5}.gpp-hook-select .gpp-block-element-search-select.is-loading .select-search__value:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2750%27 height=%2750%27%3E%3Cpath fill=%27%232F2D37%27 d=%27M25 5a20.14 20.14 0 0 1 20 17.88 2.51 2.51 0 0 0 2.49 2.26A2.52 2.52 0 0 0 50 22.33a25.14 25.14 0 0 0-50 0 2.52 2.52 0 0 0 2.5 2.81A2.51 2.51 0 0 0 5 22.88 20.14 20.14 0 0 1 25 5Z%27%3E%3CanimateTransform attributeName=%27transform%27 type=%27rotate%27 from=%270 25 25%27 to=%27360 25 25%27 dur=%270.6s%27 repeatCount=%27indefinite%27/%3E%3C/path%3E%3C/svg%3E");background-size:11px}.gpp-hook-select .gpp-block-element-search-select:not(.is-disabled) .select-search__input{cursor:pointer}.gpp-hook-select .gpp-block-element-search-select:not(.select-search--multiple) .select-search__select{border-radius:3px;left:0;max-height:360px;overflow:auto;position:absolute;right:0;top:35px;z-index:2}.gpp-hook-select .select-search__not-found{color:#888;height:auto;padding:16px;text-align:center}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.js
new file mode 100644
index 00000000..a8d80348
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.js
@@ -0,0 +1,3 @@
+!function(){var e={184:function(e,t){var n;!function(){"use strict";var a={}.hasOwnProperty;function o(){for(var e=[],t=0;t1)throw new Error('"weight" property in key must bein the range of [0, 1)');r=null==r?d:Math.max(r,d),o=null==o?d:Math.min(o,d),this._keyWeights[s]=d,i+=d}if(i>1)throw new Error("Total of weights cannot exceed 1")}}},{key:"search",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\nSearch pattern: "'.concat(e,'"'));var n=this._prepareSearchers(e),a=n.tokenSearchers,o=n.fullSearcher,r=this._search(a,o);return this._computeScore(r),this.options.shouldSort&&this._sort(r),t.limit&&"number"==typeof t.limit&&(r=r.slice(0,t.limit)),this._format(r)}},{key:"_prepareSearchers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var n=e.split(this.options.tokenSeparator),a=0,o=n.length;a0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,n=this.list,a={},o=[];if("string"==typeof n[0]){for(var r=0,i=n.length;r-1&&(R=(R+p)/2),n._log("Score average:",R);var L=!n.options.tokenize||!n.options.matchAllTokens||s>=d.length;if(n._log("\nCheck Matches: ".concat(L)),(l||u.isMatch)&&L){var B={key:a,arrayIndex:t,value:o,score:R};n.options.includeMatches&&(B.matchedIndices=u.matchedIndices);var E=m[i];E?E.output.push(B):(m[i]={item:r,output:[B]},h.push(m[i]))}}else if(c(o))for(var O=0,P=o.length;O 0?Number.EPSILON:s.score;c*=Math.pow(u,g)}r.score=c,this._log(r)}}},{key:"_sort",value:function(e){this._log("\n\nSorting...."),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){var t=[];if(this.options.verbose){var n=[];this._log("\n\nOutput:\n\n",JSON.stringify(e,(function(e,t){if("object"===a(t)&&null!==t){if(-1!==n.indexOf(t))return;n.push(t)}return t}),2)),n=null}var o=[];this.options.includeMatches&&o.push((function(e,t){var n=e.output;t.matches=[];for(var a=0,o=n.length;a-1&&(i.arrayIndex=r.arrayIndex),t.matches.push(i)}}})),this.options.includeScore&&o.push((function(e,t){t.score=e.score}));for(var r=0,i=e.length;rc)return o(e,this.pattern,p);var s=this.options,d=s.location,g=s.distance,u=s.threshold,m=s.findAllMatches,b=s.minMatchCharLength;return r(e,this.pattern,this.patternAlphabet,{location:d,distance:g,threshold:u,findAllMatches:m,minMatchCharLength:b,includeMatches:a})}}])&&a(t.prototype,n),e}();e.exports=l},function(e,t){var n=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(n,"\\$&").replace(a,"|")),r=e.match(o),i=!!r,l=[];if(i)for(var c=0,p=r.length;c =P;q-=1){var j=q-1,A=n[e.charAt(j)];if(A&&(w[j]=1),z[q]=(z[q+1]<<1|1)&A,0!==B&&(z[q]|=(S[q+1]|S[q])<<1|1|S[q+1]),z[q]&L&&(I=a(t,{errors:B,currentLocation:j,expectedLocation:y,distance:p}))<=v){if(v=I,(_=j)<=y)break;P=Math.max(1,2*y-_)}}if(a(t,{errors:B+1,currentLocation:y,expectedLocation:y,distance:p})>v)break;S=z}var H={isMatch:_>=0,score:0===I?.001:I};return f&&(H.matchedIndices=o(w,b)),H}},function(e,t){e.exports=function(e,t){var n=t.errors,a=void 0===n?0:n,o=t.currentLocation,r=void 0===o?0:o,i=t.expectedLocation,l=void 0===i?0:i,c=t.distance,p=void 0===c?100:c,s=a/e.length,d=Math.abs(l-r);return p?s+d/p:d?1:s}},function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=[],a=-1,o=-1,r=0,i=e.length;r=t&&n.push([a,o]),a=-1)}return e[r-1]&&r-a>=t&&n.push([a,r-1]),n}},function(e,t){e.exports=function(e){for(var t={},n=e.length,a=0;a=0&&v-_[0]<=u&&v+f+_[1]>=0}(e,n):function(e){var t=e.ref;if(!(t.offsetWidth||t.offsetHeight||t.getClientRects().length))return!1;var n=void 0,a=void 0;try{var o=t.getBoundingClientRect();n=o.top,a=o.height}catch(e){n=0,a=0}var r=window.innerHeight||document.documentElement.clientHeight,i=Array.isArray(e.props.offset)?e.props.offset:[e.props.offset,e.props.offset];return n-i[0]<=r&&n+a+i[1]>=0}(e);a?e.visible||(e.props.once&&m.push(e),e.visible=!0,e.forceUpdate()):e.props.once&&e.visible||(e.visible=!1,e.props.unmountIfInvisible&&e.forceUpdate())}},x=function(){for(var e=0;e=0?a=setTimeout(c,t-p):(a=null,n||(l=e.apply(r,o),a||(r=null,o=null)))};return function(){r=this,o=arguments,i=+new Date;var p=n&&!a;return a||(a=setTimeout(c,t)),p&&(l=e.apply(r,o),r=null,o=null),l}}},81:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.on=function(e,t,n,a){a=a||!1,e.addEventListener?e.addEventListener(t,n,a):e.attachEvent&&e.attachEvent("on"+t,(function(t){n.call(e,t||window.event)}))},t.off=function(e,t,n,a){a=a||!1,e.removeEventListener?e.removeEventListener(t,n,a):e.detachEvent&&e.detachEvent("on"+t,n)}},315:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(!(e instanceof HTMLElement))return document.documentElement;for(var t="absolute"===e.style.position,n=/(scroll|auto)/,a=e;a;){if(!a.parentNode)return e.ownerDocument||document.documentElement;var o=window.getComputedStyle(a),r=o.position,i=o.overflow,l=o["overflow-x"],c=o["overflow-y"];if("static"===r&&t)a=a.parentNode;else{if(n.test(i)&&n.test(l)&&n.test(c))return a;a=a.parentNode}}return e.ownerDocument||e.documentElement||document.documentElement}},821:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var a,o;return t||(t=250),function(){var r=n||this,i=+new Date,l=arguments;a&&i .gb-inside-container > .block-editor-inner-blocks > .block-editor-block-list__layout";return void 0!==d&&(g=d?".gb-container-"+o+".inline-post-meta-area > .gb-inside-container":".gb-container-"+o+".inline-post-meta-area"),i&&(r(e,g,{"justify-content":l}),"generateblocks.editor.tabletCSS"===(0,c.currentFilter)()&&r(e,g,{"justify-content":p}),"generateblocks.editor.mobileCSS"===(0,c.currentFilter)()&&r(e,g,{"justify-content":s})),e}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n0?n({className:t.join(" ")}):n({className:""}),"generateblocks/headline"===a){var r=(0,l.__)("Hello World","gp-premium");"post-date"===e?r=(0,l.__)("Post date","gp-premium"):"post-author"===e?r=(0,l.__)("Post author name","gp-premium"):"terms"===e?r=(0,l.__)("Terms","gp-premium"):"comments-number"===e?r=(0,l.__)("Comments number","gp-premium"):"post-meta"===e?r=(0,l.__)("Post meta","gp-premium"):"user-meta"===e?r=(0,l.__)("User meta","gp-premium"):"term-meta"===e&&(r=(0,l.__)("Term meta","gp-premium")),n({content:r})}}}),""!==r&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.TextControl,{className:"gpp-blocks-dynamic-text-replace-field",type:"text",value:c}),"post-date"===r&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.SelectControl,{label:(0,l.__)("Date type","gp-premium"),value:w,options:[{label:(0,l.__)("Published date","gp-premim"),value:"published-date"},{label:(0,l.__)("Updated date","gp-premium"),value:"updated-date"}],onChange:function(e){n({gpDynamicDateType:e,gpDynamicTextBefore:"",gpDynamicUpdatedDateBefore:""})}}),"published-date"===w&&(0,o.createElement)(p.ToggleControl,{label:(0,l.__)("Replace with updated date","gp-premium"),checked:!!m,onChange:function(e){n({gpDynamicDateUpdated:e})}})),"terms"===r&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.SelectControl,{label:(0,l.__)("Taxonomy","gp-premium"),value:s,options:C,onChange:function(e){n({gpDynamicTextTaxonomy:e})}}),"generateblocks/headline"===a&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.TextControl,{label:(0,l.__)("Term separator","gp-premium"),type:"text",value:d,onChange:function(e){n({gpDynamicTextTaxonomySeparator:e})}}))),"comments-number"===r&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.TextControl,{label:(0,l.__)("No comments text","gp-premium"),type:"text",value:b,onChange:function(e){n({gpDynamicNoCommentsText:e})}}),(0,o.createElement)(p.TextControl,{label:(0,l.__)("Singular comments text","gp-premium"),type:"text",value:h,onChange:function(e){n({gpDynamicSingleCommentText:e})}}),(0,o.createElement)(p.TextControl,{label:(0,l.__)("Plural comments text","gp-premium"),help:(0,l.__)("Use % in place of the number of comments","gp-premium"),type:"text",value:f,onChange:function(e){n({gpDynamicMultipleCommentsText:e})}})),("post-meta"===r||"term-meta"===r||"user-meta"===r)&&(0,o.createElement)(p.TextControl,{label:(0,l.__)("Meta field name","gp-premium"),type:"text",value:g,onChange:function(e){n({gpDynamicTextCustomField:e})}}),"generateblocks/headline"===a&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.TextControl,{label:R,type:"text",value:u,onChange:function(e){n({gpDynamicTextBefore:e})}}),"post-date"===r&&!!m&&"published-date"===w&&(0,o.createElement)(p.TextControl,{label:(0,l.__)("Updated date before text","gp-premium"),type:"text",value:T,onChange:function(e){n({gpDynamicUpdatedDateBefore:e})}}))),S.length>1&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.SelectControl,{label:(0,l.__)("Dynamic link type","gp-premium"),value:y,options:S,onChange:function(e){"generateblocks/button"===a&&n(e?{gpDynamicLinkType:e,hasUrl:!0,url:"#"}:{gpDynamicLinkType:e,hasUrl:!1,url:""}),"generateblocks/headline"===a&&n({gpDynamicLinkType:e})}}),("post-meta"===y||"term-meta"===y||"user-meta"===y)&&(0,o.createElement)(p.TextControl,{label:(0,l.__)("Meta field name","gp-premium"),type:"text",value:x,onChange:function(e){n({gpDynamicLinkCustomField:e})}})),I&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.SelectControl,{label:(0,l.__)("Source","gp-premium"),value:i,options:[{label:(0,l.__)("Current post","gp-premium"),value:"current-post"},{label:(0,l.__)("Next post","gp-premium"),value:"next-post"},{label:(0,l.__)("Previous post","gp-premium"),value:"previous-post"}],onChange:function(e){n({gpDynamicSource:e})}}),("next-post"===i||"previous-post"===i)&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.ToggleControl,{label:(0,l.__)("In same term","gp-premium"),help:(0,l.__)("Check for posts with the same term as the current post.","gp-premim"),checked:!!v,onChange:function(e){n({gpDynamicSourceInSameTerm:e})}}),!!v&&(0,o.createElement)(p.TextControl,{label:(0,l.__)("Taxonomy","gp-premium"),help:(0,l.__)("The taxonomy to check if in the same term.","gp-premim"),type:"text",value:_,onChange:function(e){n({gpDynamicSourceInSameTermTaxonomy:e})}}))))}}]),r}(o.Component),B=L;function E(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function O(e){for(var t=1;to&&(r=0);const i=a[r];return i&&i.disabled?X(r,{key:n,options:a}):r}function ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function te(e){for(var t=1;tt.find((t=>t.value===e)))):t.find((t=>t.value===e))||null}function ie(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function le(e){for(var t=1;t{}),getOptions:l=null,allowEmpty:c=!0,closeOnSelect:p=!0,closable:s=!0}){const d=(0,Z.useRef)(null),g=(0,Z.useMemo)((()=>function(e){if(!Array.isArray(e))return[];const t=[];return e.forEach(((e,n)=>{if("type"in e&&"group"===e.type){const a=e.name.replace(/\s+/g,"-").toLowerCase()+"-"+n;e.items.forEach((n=>{t.push(te(te({},n),{},{groupId:a,groupName:e.name,_id:""+n.value}))}))}else t.push(te(te({},e),{},{_id:""+e.value,index:n}))})),t}(r)),[r]),[u,m]=(0,Z.useState)({flat:[],addedOptions:[],value:e,search:"",focus:!1,searching:!1,highlighted:-1,changed:!1}),{flat:b,addedOptions:h,value:f,search:y,focus:x,searching:v,highlighted:_}=u,k=(0,Z.useMemo)((()=>{let e=re(f,[...g,...h]);return e||c||n||([e]=g),e}),[f,g,h,c,n]),w=(0,Z.useMemo)((()=>function(e){const t=[];return e.forEach(((e,n)=>{if("groupId"in e){const a=function(e){for(var t=1;t"groupId"in e&&e.groupId===a.groupId));a.index=n,o>-1?t[o].items.push(a):t.push({items:[a],groupId:e.groupId,type:"group",name:e.groupName})}else t.push(e)})),t}(b)),[b]),T=(0,Z.useMemo)((()=>function(e){return e&&"object"==typeof e?Array.isArray(e)?e.map((e=>e&&e.name)).join(", "):e.name:""}(k)),[k]),C=(0,Z.useCallback)((()=>{m((e=>de(de({},e),{},{focus:!1,search:"",flat:g,highlighted:-1}))),d.current&&d.current.blur()}),[g,d]),D=e=>m((t=>de(de({},t),{},{focus:e}))),S=(0,Z.useCallback)((e=>{m((t=>{const{flat:a,highlighted:o}=t,r=e?a.find((t=>t.value==e)):a[o];if(!r)return t;const i=function(e,t,n){if(!n)return e;if(!t)return[e];const a=Array.isArray(t)?[...t]:[t],o=a.findIndex((t=>t===e));return o>=0?a.splice(o,1):a.push(e),a}(r.value,t.value,n),l=re(i,a);return de(de({},t),{},{addedOptions:n?l:[l],value:i,changed:[i,l]})}))}),[n]),I=(0,Z.useCallback)((e=>{e.preventDefault(),p&&d.current&&d.current.blur(),S(e.currentTarget.value)}),[S,p]),R=(0,Z.useCallback)((e=>{const{key:t}=e;"ArrowDown"!==t&&"ArrowUp"!==t||(e.preventDefault(),m((e=>de(de({},e),{},{highlighted:X(e.highlighted,{key:t,options:e.flat})}))))}),[]),L=(0,Z.useCallback)((({key:e})=>{"Enter"===e&&(S(),s&&p&&C())}),[S,p,C,s]),B=(0,Z.useCallback)((({key:e})=>{"Escape"===e&&C()}),[C]),E={tabIndex:"0",readOnly:!a,onChange:a?({target:e})=>{const{value:t}=e,n={search:t};let a=g;l&&t.length&&(n.searching=!0,a=l(t)),m((e=>de(de({},e),n))),Promise.resolve(a).then((e=>{let n=e;t.length&&(n=function(e,t,n){return!!(e.length&&pe&&n)&&function(e,t,n){return new pe(t,n).search(e).map(((e,t)=>le(le({},e),{},{index:t})))}(e,t,n)}(t,e,o)),m((t=>de(de({},t),{},{flat:!1===n?e:n,searching:!1})))})).catch((()=>m((e=>de(de({},e),{},{flat:g,searching:!1})))))}:null,disabled:t,onMouseDown:()=>D(!x),onBlur:C,onFocus:()=>D(!0),onKeyPress:L,onKeyDown:R,onKeyUp:B,ref:d},O=(0,Z.useMemo)((()=>({tabIndex:"-1",onMouseDown:I,onKeyDown:R,onKeyPress:L,onBlur:C})),[I,R,L,C]);return(0,Z.useEffect)((()=>{m((t=>de(de({},t),{},{value:e})))}),[e]),(0,Z.useEffect)((()=>{m((e=>de(de({},e),{},{flat:g})))}),[g]),(0,Z.useEffect)((()=>{!1!==u.changed&&(m((e=>de(de({},e),{},{changed:!1}))),i(...u.changed))}),[u.changed,i]),[{value:k,highlighted:_,options:w,disabled:t,displayValue:T,focus:x,search:y,searching:v},E,O,e=>m((t=>de(de({},t),{},{value:e})))]}var me=n(697),be=n.n(me);const he=be().shape({name:be().string.isRequired,value:be().oneOfType([be().string,be().number]).isRequired});function fe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function ye(e){for(var t=1;t{let{optionProps:t,highlighted:n,selected:a,cls:o,renderOption:r}=e,i=function(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,["optionProps","highlighted","selected","cls","renderOption"]);const l=[o("option"),!!a&&o("is-selected"),!!n&&o("is-highlighted")].filter((e=>!!e)).join(" "),c=ye(ye({},t),{},{value:i.value,disabled:i.disabled});return Q().createElement("li",{className:o("row"),role:"menuitem","data-index":i.index,"data-value":escape(i.value),key:i.value},r(c,i,{selected:a,highlighted:n},l))};ve.defaultProps={disabled:!1,index:null,value:null},ve.propTypes={};var _e=(0,Z.memo)(ve);function ke(){return ke=Object.assign||function(e){for(var t=1;t{const v=(0,Z.useRef)(null),[_,k,w]=ue({options:l,value:e,multiple:a,disabled:t,fuse:f,search:o,onChange:p,getOptions:h,closeOnSelect:d,closable:!a||"on-focus"===s,allowEmpty:!!n}),{focus:T,highlighted:C,value:D,options:S,searching:I,displayValue:R,search:L}=_,B=(0,Z.useCallback)((e=>"function"==typeof g?g(e):0===e.indexOf("container")?e.replace("container",g):0===e.indexOf("is-")||0===e.indexOf("has-")?e:g.split(" ")[0]+"__"+e),[g]),E=(0,Z.useCallback)((()=>{if(null===y)return null;const e="function"==typeof y?y():y;return Q().createElement("li",{className:B("not-found")},e)}),[y,B]),O=[B("container"),!!t&&B("is-disabled"),!!I&&B("is-loading"),!!T&&B("has-focus")].filter((e=>!!e)).join(" "),P=T&&o?L:R;let M;switch((0,Z.useEffect)((()=>{const{current:e}=v;if(!e||a||C<0&&!D)return;const t=C>-1?'[data-index="'+C+'"]':'[data-value="'+escape(D.value)+'"]',n=e.querySelector(t);if(n){const t=e.getBoundingClientRect(),a=n.getBoundingClientRect();e.scrollTop=n.offsetTop-t.height/2+a.height/2}}),[T,D,C,v,a]),s){case"never":M=!1;break;case"always":M=!0;break;case"on-focus":M=T;break;default:M=!t&&(T||a)}return Q().createElement("div",{ref:x,className:O,id:c},(!a||n||o)&&Q().createElement("div",{className:B("value")},u(Te(Te({},k),{},{placeholder:n,autoFocus:r,autoComplete:i,value:P}),_,B("input"))),M&&Q().createElement("div",{className:B("select"),ref:v,onMouseDown:e=>e.preventDefault()},Q().createElement("ul",{className:B("options")},S.length>0?S.map((e=>{const t="group"===e.type,n=t?e.items:[e],a={cls:B,optionProps:w,renderOption:m},o=n.map((e=>{return Q().createElement(_e,ke({key:e.value,selected:(t=e,n=D,!!n&&(Array.isArray(n)?n.findIndex((e=>e.value===t.value))>=0:n.value===t.value)),highlighted:C===e.index},a,e));var t,n}));return t?Q().createElement("li",{role:"none",className:B("row"),key:e.groupId},Q().createElement("div",{className:B("group")},Q().createElement("div",{className:B("group-header")},b(e.name)),Q().createElement("ul",{className:B("options")},o))):o})):E()||null)))}));De.defaultProps={className:"select-search",disabled:!1,search:!1,multiple:!1,placeholder:null,id:null,autoFocus:!1,autoComplete:"on",value:"",onChange:()=>{},printOptions:"auto",closeOnSelect:!0,renderOption:(e,t,n,a)=>Q().createElement("button",ke({type:"button",className:a},e),t.name),renderGroupHeader:e=>e,renderValue:(e,t,n)=>Q().createElement("input",ke({},e,{className:n})),fuse:{keys:["name","groupName"],threshold:.3},getOptions:null,emptyMessage:null},De.propTypes={};var Se=(0,Z.memo)(De),Ie={template_1:{label:(0,l._x)("Two columns with featured image","label","gp-premium"),thumbnail:"post-navigation-featured-images-1.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"99fe8eb7","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"7b27c819","columns":2,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"8e5dc8f7","isGrid":true,"gridId":"ee9eb157","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","marginBottomMobile":"10","isDynamic":true,"gpRemoveContainerCondition":"no-previous-post"} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"e2b84192","columns":2,"horizontalGap":15,"verticalAlignment":"center","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"6aed9546","isGrid":true,"gridId":"fa4d77e4","width":25,"widthMobile":25,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSource":"previous-post","imageSize":"thumbnail","linkTo":"single-post","imageWidth":100,"imageHeight":100,"avatarSize":100} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"d54a6460","isGrid":true,"gridId":"fa4d77e4","width":75,"widthMobile":75,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"0d00c744","element":"p","marginBottom":"5","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Previous post title","gpDynamicSource":"previous-post"} --\x3e Previous post title
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"86e1ad46","element":"p","showAdvancedTypography":true,"fontSize":14,"marginBottom":"0","gpDynamicTextType":"post-author","gpDynamicLinkType":"author-archives","gpDynamicTextReplace":"Author name","gpDynamicSource":"previous-post","gpDynamicTextBefore":"by "} --\x3e Author name
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"2540358d","isGrid":true,"gridId":"ee9eb157","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","alignmentMobile":"left","isDynamic":true,"gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"6e69ba24","columns":2,"horizontalGap":15,"verticalAlignment":"center","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"daa456b5","isGrid":true,"gridId":"fa4d77e4","width":75,"widthMobile":75,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","alignment":"right","alignmentMobile":"left","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"2883b2a4","element":"p","marginBottom":"5","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Next post title","gpDynamicSource":"next-post"} --\x3e Next post title
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"3d2e07c6","element":"p","showAdvancedTypography":true,"fontSize":14,"marginBottom":"0","gpDynamicTextType":"post-author","gpDynamicLinkType":"author-archives","gpDynamicTextReplace":"Author name","gpDynamicSource":"next-post","gpDynamicTextBefore":"by "} --\x3e Author name
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"2634cdf9","isGrid":true,"gridId":"fa4d77e4","width":25,"widthMobile":25,"orderMobile":-1,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSource":"next-post","imageSize":"thumbnail","linkTo":"single-post","imageWidth":100,"imageHeight":100,"avatarSize":100} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_do_template_part"},{key:"_generate_hook_priority",value:"1"},{key:"_generate_disable_post_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!0}]},template_2:{label:(0,l._x)("Two columns with arrows","label","gp-premium"),thumbnail:"post-navigation-arrows-1.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"d1dd99b1","paddingTop":"20","paddingRight":"0","paddingBottom":"20","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"a4b97d6a","columns":2,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"9c89f761","isGrid":true,"gridId":"ee9eb157","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","marginBottomMobile":"10","isDynamic":true,"gpRemoveContainerCondition":"no-previous-post"} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"c04126aa","columns":2,"horizontalGap":15,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"9cf413a8","isGrid":true,"gridId":"fa4d77e4","width":15,"widthTablet":25,"widthMobile":15,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"38a2c075","fillHorizontalSpace":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"bec8d56e","hasUrl":true,"hasIcon":true,"removeText":true,"backgroundColor":"#000000","textColor":"#ffffff","backgroundColorHover":"#abb8c3","textColorHover":"","paddingTop":"10","paddingRight":"10","paddingBottom":"10","paddingLeft":"10","iconSize":1.5,"gpDynamicLinkType":"single-post","gpDynamicSource":"previous-post"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"625f3305","isGrid":true,"gridId":"fa4d77e4","width":85,"widthTablet":75,"widthMobile":85,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"a6f36397","element":"p","marginBottom":"0","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Previous post title","gpDynamicSource":"previous-post"} --\x3e Previous post title
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"3d262c0b","element":"p","showAdvancedTypography":true,"fontSize":14,"marginBottom":"0","gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicSource":"previous-post","gpDynamicDateUpdated":true} --\x3e Date
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"5d70717c","isGrid":true,"gridId":"ee9eb157","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","alignment":"right","alignmentMobile":"left","isDynamic":true,"gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"ee647ff2","columns":2,"horizontalGap":15,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"78f3ead4","isGrid":true,"gridId":"fa4d77e4","width":85,"widthTablet":75,"widthMobile":85,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"643cf12f","element":"p","marginBottom":"0","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Next post title","gpDynamicSource":"next-post"} --\x3e Next post title
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8ac35083","element":"p","showAdvancedTypography":true,"fontSize":14,"marginBottom":"0","gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicSource":"next-post","gpDynamicDateUpdated":true} --\x3e Date
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"780c810b","isGrid":true,"gridId":"fa4d77e4","width":15,"widthTablet":25,"widthMobile":15,"orderMobile":-1,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"fe863527","fillHorizontalSpace":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"122d9fa4","hasUrl":true,"hasIcon":true,"removeText":true,"backgroundColor":"#000000","textColor":"#ffffff","backgroundColorHover":"#abb8c3","textColorHover":"","paddingTop":"10","paddingRight":"10","paddingBottom":"10","paddingLeft":"10","iconSize":1.5,"gpDynamicLinkType":"single-post","gpDynamicSource":"next-post"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_do_template_part"},{key:"_generate_hook_priority",value:"1"},{key:"_generate_disable_post_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!0}]},template_3:{label:(0,l._x)("Two columns with background overlays","label","gp-premium"),thumbnail:"post-navigation-overlay.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"aadd0a6f","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"fe8855c5","columns":2,"horizontalGap":0,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"59edc08b","isGrid":true,"gridId":"fe8855c5","paddingTop":"40","paddingRight":"40","paddingBottom":"40","paddingLeft":"40","paddingSyncUnits":true,"backgroundColor":"#000000","textColor":"#ffffff","linkColor":"#ffffff","linkColorHover":"#e3e3e3","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"bgOptions":{"selector":"pseudo-element","opacity":0.4,"overlay":false,"position":"center center","size":"cover","repeat":"no-repeat","attachment":""},"isDynamic":true,"gpDynamicImageBg":"featured-image","gpDynamicSource":"previous-post","gpRemoveContainerCondition":"no-previous-post"} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8d3d4c12","element":"p","backgroundColor":"#cf2e2e","showAdvancedTypography":true,"fontSize":14,"textTransform":"uppercase","paddingTop":"5","paddingRight":"10","paddingBottom":"5","paddingLeft":"10","inlineWidth":true} --\x3e Previous
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"352592d1","element":"h3","showAdvancedTypography":true,"fontSize":25,"marginBottom":"0","className":"","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"previous-post"} --\x3e Hello World \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"993a41e4","isGrid":true,"gridId":"fe8855c5","paddingTop":"40","paddingRight":"40","paddingBottom":"40","paddingLeft":"40","paddingSyncUnits":true,"backgroundColor":"#000000","textColor":"#ffffff","linkColor":"#ffffff","linkColorHover":"#e3e3e3","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"bgOptions":{"selector":"pseudo-element","opacity":0.4,"overlay":false,"position":"center center","size":"cover","repeat":"no-repeat","attachment":""},"isDynamic":true,"gpDynamicImageBg":"featured-image","gpDynamicSource":"next-post","gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"49c8845f","element":"p","backgroundColor":"#cf2e2e","showAdvancedTypography":true,"fontSize":14,"textTransform":"uppercase","paddingTop":"5","paddingRight":"10","paddingBottom":"5","paddingLeft":"10","inlineWidth":true} --\x3e Next
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"6ba8079e","element":"h3","showAdvancedTypography":true,"fontSize":25,"marginBottom":"0","className":"","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"next-post"} --\x3e Hello World \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_do_template_part"},{key:"_generate_hook_priority",value:"1"},{key:"_generate_disable_post_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!1}]},template_4:{label:(0,l._x)("Two columns with arrows","label","gp-premium"),thumbnail:"post-navigation-arrows-2.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"96f5f0fa","innerContainer":"full","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"4785bcc3","columns":2,"horizontalGap":0,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"5287d6da","isGrid":true,"gridId":"4785bcc3","paddingTop":"30","paddingRight":"0","paddingBottom":"25","paddingLeft":"25","backgroundColor":"#ffffff","isDynamic":true,"gpRemoveContainerCondition":"no-previous-post","opacities":[],"textShadows":[{"state":"normal","target":"self","customSelector":"","color":"#000000","colorOpacity":0.5,"xOffset":5,"yOffset":5,"blur":10}]} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"261aea9d","columns":2,"horizontalGap":0,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"eb3b7005","isGrid":true,"gridId":"261aea9d","width":75,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","alignment":"left","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"0a2d5bfc","element":"h3","alignment":"left","textColor":"#000000","linkColor":"#000000","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"previous-post"} --\x3e Hello World \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"164ae39e","element":"p","showAdvancedTypography":true,"fontSize":14,"marginBottom":"0","hasIcon":true,"gpDynamicTextType":"comments-number","gpDynamicLinkType":"comments","gpDynamicTextReplace":"Comments number","gpDynamicSource":"previous-post"} --\x3e Comments number
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"75cd654a","isGrid":true,"gridId":"261aea9d","width":25,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","alignment":"right","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"2cf8ccdf","alignment":"right","stack":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"6acb0e83","hasUrl":true,"hasIcon":true,"removeText":true,"backgroundColor":"#0366d6","textColor":"#ffffff","backgroundColorHover":"#222222","textColorHover":"#ffffff","paddingTop":"15","paddingRight":"20","paddingBottom":"15","paddingLeft":"20","gpDynamicLinkType":"single-post","gpDynamicSource":"previous-post"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"7af8fa61","isGrid":true,"gridId":"4785bcc3","paddingTop":"30","paddingRight":"25","paddingBottom":"25","paddingLeft":"0","backgroundColor":"#0366d6","isDynamic":true,"gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"1161e4d4","columns":2,"horizontalGap":0,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"045e1698","isGrid":true,"gridId":"261aea9d","width":25,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","alignment":"left","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"b5e0b3c6","alignment":"left","stack":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"557abb73","hasUrl":true,"hasIcon":true,"removeText":true,"backgroundColor":"#ffffff","textColor":"#0693e3","backgroundColorHover":"#222222","textColorHover":"#ffffff","paddingTop":"15","paddingRight":"20","paddingBottom":"15","paddingLeft":"20","gpDynamicLinkType":"single-post","gpDynamicSource":"next-post"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"9ad09f6f","isGrid":true,"gridId":"261aea9d","width":75,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","alignment":"right","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"9ba9e9d1","element":"h3","alignment":"right","textColor":"#ffffff","linkColor":"#ffffff","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"next-post"} --\x3e Hello World \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8ebf8dbe","element":"p","alignment":"right","textColor":"#ffffff","linkColor":"#ffffff","showAdvancedTypography":true,"fontSize":14,"marginBottom":"0","hasIcon":true,"gpDynamicTextType":"comments-number","gpDynamicLinkType":"comments","gpDynamicTextReplace":"Comments number","gpDynamicSource":"next-post"} --\x3e Comments number
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_do_template_part"},{key:"_generate_hook_priority",value:"1"},{key:"_generate_disable_post_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!1}]},template_5:{label:(0,l._x)("Two columns with featured image offset","label","gp-premim"),thumbnail:"post-navigation-offset.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"52018004","innerContainer":"full","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","marginRight":"30","marginLeft":"30","marginLeftTablet":"30","marginRightMobile":"25","marginLeftMobile":"25","alignment":"right","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"7bdd6853","columns":4,"horizontalGap":0,"verticalGapMobile":0,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"4138dd74","isGrid":true,"gridId":"7bdd6853","width":25,"widthTablet":50,"widthMobile":50,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","borderRadiusBottomLeft":"10","borderRadiusTopLeft":"10","borderRadiusBottomLeftTablet":"0","borderRadiusBottomLeftMobile":"0","borderRadiusTopLeftMobile":"5","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"verticalAlignment":"center","isDynamic":true,"gpDynamicImageBg":"featured-image","gpDynamicSource":"previous-post","gpRemoveContainerCondition":"no-previous-post"} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"776ec4d6","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"a3aaad4c","hasUrl":true,"hasIcon":true,"removeText":true,"backgroundColor":"#b5b5b5","textColor":"#ffffff","backgroundColorHover":"#222222","textColorHover":"#ffffff","borderColor":"#f9f9f9","marginRight":"1.5","marginLeft":"-1.5","marginUnit":"em","paddingTop":"15","paddingRight":"15","paddingBottom":"15","paddingLeft":"15","borderSizeTop":"7","borderSizeRight":"7","borderSizeBottom":"7","borderSizeLeft":"7","borderRadiusTopRight":"100","borderRadiusBottomRight":"100","borderRadiusBottomLeft":"100","borderRadiusTopLeft":"100","borderRadiusUnit":"%","iconSizeMobile":0.8,"gpDynamicLinkType":"single-post","gpDynamicSource":"previous-post"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"18430adf","isGrid":true,"gridId":"7bdd6853","width":25,"widthTablet":50,"widthMobile":50,"paddingTop":"30","paddingRight":"30","paddingBottom":"30","paddingLeft":"30","paddingSyncUnits":true,"paddingTopMobile":"10","paddingRightMobile":"10","paddingBottomMobile":"10","paddingLeftMobile":"10","marginRight":"10","marginRightTablet":"0","marginRightMobile":"0","borderRadiusTopRight":"10","borderRadiusBottomRight":"10","borderRadiusBottomRightTablet":"0","borderRadiusTopRightMobile":"5","borderRadiusBottomRightMobile":"0","backgroundColor":"#ffffff","zindex":2,"alignment":"center","isDynamic":true,"gpDynamicImageBg":"featured-image","gpDynamicSource":"previous-post","gpRemoveContainerCondition":"no-previous-post"} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"2acc62a4","element":"h3","alignment":"left","backgroundColor":"#ffffff","textColor":"#000000","linkColor":"#000000","showAdvancedTypography":true,"fontSize":25,"fontSizeMobile":17,"marginBottom":"0","marginLeft":"-4","marginUnit":"em","marginLeftMobile":"-3","paddingTop":"10","paddingRight":"10","paddingBottom":"10","paddingLeft":"10","paddingSyncUnits":true,"borderRadiusBottomLeft":"10","borderRadiusTopLeft":"10","borderRadiusTopRightMobile":"5","borderRadiusBottomRightMobile":"5","borderRadiusBottomLeftMobile":"5","borderRadiusTopLeftMobile":"5","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"previous-post"} --\x3e Hello World \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"ce9878f4","isGrid":true,"gridId":"7bdd6853","width":25,"widthTablet":50,"widthMobile":50,"paddingTop":"30","paddingRight":"30","paddingBottom":"30","paddingLeft":"30","paddingSyncUnits":true,"paddingTopMobile":"10","paddingRightMobile":"10","paddingBottomMobile":"10","paddingLeftMobile":"10","marginLeft":"10","marginLeftTablet":"0","marginLeftMobile":"0","borderRadiusBottomLeft":"10","borderRadiusTopLeft":"10","borderRadiusTopLeftTablet":"0","borderRadiusBottomLeftMobile":"5","borderRadiusTopLeftMobile":"0","backgroundColor":"#ffffff","zindex":1,"alignment":"center","isDynamic":true,"gpDynamicImageBg":"featured-image","gpDynamicSource":"next-post","gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"9d97a37f","element":"h3","alignment":"right","backgroundColor":"#ffffff","textColor":"#000000","linkColor":"#000000","showAdvancedTypography":true,"fontSize":25,"fontSizeMobile":17,"marginRight":"-4","marginBottom":"0","marginUnit":"em","marginRightMobile":"-3","paddingTop":"10","paddingRight":"10","paddingBottom":"10","paddingLeft":"10","paddingSyncUnits":true,"borderRadiusTopRight":"10","borderRadiusBottomRight":"10","borderRadiusTopRightMobile":"5","borderRadiusBottomRightMobile":"5","borderRadiusBottomLeftMobile":"5","borderRadiusTopLeftMobile":"5","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"next-post"} --\x3e Hello World \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"6c856070","isGrid":true,"gridId":"7bdd6853","width":25,"widthTablet":50,"widthMobile":50,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","borderRadiusTopRight":"10","borderRadiusBottomRight":"10","borderRadiusTopRightTablet":"0","borderRadiusTopRightMobile":"0","borderRadiusBottomRightMobile":"5","bgImage":{"id":"","image":{"url":"https://generatepress.local/wp-content/plugins/gp-premium/elements/assets/admin/background-image-fallback.jpg"}},"verticalAlignment":"center","isDynamic":true,"gpDynamicImageBg":"featured-image","gpDynamicSource":"next-post","gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"ad40b681","alignment":"right","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"139d60e4","hasUrl":true,"hasIcon":true,"removeText":true,"backgroundColor":"#b5b5b5","textColor":"#ffffff","backgroundColorHover":"#222222","textColorHover":"#ffffff","borderColor":"#f9f9f9","marginRight":"-1.5","marginLeft":"1.5","marginUnit":"em","paddingTop":"15","paddingRight":"15","paddingBottom":"15","paddingLeft":"15","borderSizeTop":"7","borderSizeRight":"7","borderSizeBottom":"7","borderSizeLeft":"7","borderRadiusTopRight":"100","borderRadiusBottomRight":"100","borderRadiusBottomLeft":"100","borderRadiusTopLeft":"100","borderRadiusUnit":"%","iconSizeMobile":0.8,"gpDynamicLinkType":"single-post","gpDynamicSource":"next-post","opacities":[],"transitions":[],"boxShadows":[],"transforms":[],"textShadows":[],"filters":[]} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_do_template_part"},{key:"_generate_hook_priority",value:"1"},{key:"_generate_disable_post_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!1}]}},Re={basic_1:{label:(0,l._x)("Inline with avatar","label","gp-premium"),thumbnail:"post-meta-inline.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"8a25fc79","paddingTop":"15","paddingRight":"0","paddingBottom":"15","paddingLeft":"0","marginTop":"20","marginBottom":"20","borderSizeTop":"1","borderSizeBottom":"1","borderColor":"#e8edf0","showAdvancedTypography":true,"fontSize":14,"isDynamic":true,"gpInlinePostMeta":true} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"author-avatar","avatarRounded":true} /--\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"3fb4928a","element":"div","marginLeft":"10","paddingRight":"10","inlineWidth":true,"gpDynamicTextType":"post-author","gpDynamicLinkType":"author-archives","gpDynamicTextReplace":"Author Name"} --\x3e Author Name
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"f9b55781","element":"div","borderColor":"#e8edf0","paddingLeft":"10","borderSizeLeft":"1","inlineWidth":true,"gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date"} --\x3e Date
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8fca9ec9","element":"div","borderColor":"#e8edf0","marginLeft":"10","paddingLeft":"10","borderSizeLeft":"1","hasIcon":true,"inlineWidth":true,"gpDynamicTextType":"comments-number","gpDynamicLinkType":"comments","gpDynamicTextReplace":"Comments","gpDynamicTextTaxonomy":"category","gpDynamicNoCommentsText":"0","gpDynamicSingleCommentText":"1","gpDynamicMultipleCommentsText":"%"} --\x3e \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_post_meta_location",value:"after-post-title"},{key:"_generate_disable_primary_post_meta",value:!0}]},basic_2:{label:(0,l._x)("Stacked with avatar","label","gp-premium"),thumbnail:"post-meta-avatar-stacked.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"a745be15","paddingTop":"20","paddingRight":"0","paddingBottom":"20","paddingLeft":"0","showAdvancedTypography":true,"fontSize":14,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"fe4d27a3","columns":2,"horizontalGap":15,"verticalAlignment":"center","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"fd4592f4","isGrid":true,"gridId":"fe4d27a3","width":10,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"author-avatar","avatarSize":120} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"137e86ad","isGrid":true,"gridId":"fe4d27a3","width":90,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"d7bb0434","element":"p","marginBottom":"5","gpDynamicTextType":"post-author","gpDynamicLinkType":"author-archives","gpDynamicTextReplace":"Author Name"} --\x3e Author Name
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"759ebd2f","element":"p","marginBottom":"0","gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicDateUpdated":true} --\x3e Date
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_post_meta_location",value:"after-post-title"},{key:"_generate_disable_primary_post_meta",value:!0}]},basic_3:{label:(0,l._x)("Term buttons","label","gp-premium"),thumbnail:"post-meta-term-buttons.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"7134d7c2","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"621d2c31","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"e378fc0b","hasUrl":true,"backgroundColor":"#000000","textColor":"#ffffff","backgroundColorHover":"#222222","textColorHover":"#ffffff","showAdvancedTypography":true,"fontSize":13,"marginTop":"5","marginRight":"5","marginBottom":"5","marginLeft":"5","paddingTop":"10","paddingRight":"10","paddingBottom":"10","paddingLeft":"10","borderRadiusTopRight":"20","borderRadiusBottomRight":"20","borderRadiusBottomLeft":"20","borderRadiusTopLeft":"20","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicLinkType":"term-archives","gpDynamicTextReplace":"Terms","gpDynamicTextTaxonomy":"category"} --\x3e Terms \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_post_meta_location",value:"before-post-title"},{key:"_generate_disable_primary_post_meta",value:!1}]}},Le={template_1:{label:(0,l._x)("Full footer 1","label","gp-premium"),thumbnail:"site-footer-full-1.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"73cd57e1","paddingTop":"140","paddingRight":"30","paddingBottom":"60","paddingLeft":"30","backgroundColor":"#1b1b42","shapeDividers":[],"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"b76f312f","columns":3,"horizontalGap":80,"verticalAlignment":"center","verticalGapTablet":40,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"53cb46e2","isGrid":true,"gridId":"41f809a3","width":60,"widthTablet":100,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"aa19f1fb","element":"h3","textColor":"#ffffff"} --\x3e Reach out to us for a consultation. \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"41582601","element":"p","textColor":"#ffffff","paddingRight":"100","paddingRightTablet":"0"} --\x3e Semper blandit suspendisse faucibus metus lobortis morbi magna vivamus per risus fermentum dapibus imperdiet praesent magnis.
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"a8276863","marginTop":"30","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"529d5dda","hasUrl":true,"backgroundColor":"","textColor":"#ffffff","backgroundColorHover":"#6212b3","backgroundColorHoverOpacity":0,"textColorHover":"#f2f5fa","borderColor":"#ffffff","borderColorHover":"#f2f5fa","borderColorHoverOpacity":0.8,"fontWeight":"600","marginRight":"20","marginBottomMobile":"20","paddingTop":"10","paddingRight":"20","paddingBottom":"10","paddingLeft":"20","borderSizeTop":"3","borderSizeRight":"3","borderSizeBottom":"3","borderSizeLeft":"3","borderRadiusTopRight":"2","borderRadiusBottomRight":"2","borderRadiusBottomLeft":"2","borderRadiusTopLeft":"2"} --\x3e Contact Us \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"e1bd60bb","isGrid":true,"gridId":"41f809a3","width":20,"widthTablet":50,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","removeVerticalGapTablet":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"37420255","element":"p","textColor":"#ffffff"} --\x3e Company Name Address Here Address Here
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"bf8e162e","element":"p","textColor":"#ffffff","linkColor":"#ffffff","linkColorHover":"#f2f5fa","marginBottom":"0","hasIcon":true,"iconPaddingTop":".1"} --\x3e +1 000 000 0000
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"c762d353","isGrid":true,"gridId":"41f809a3","width":20,"widthTablet":50,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","removeVerticalGapTablet":true,"removeVerticalGapMobile":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"08544617","alignment":"right","alignmentTablet":"right","alignmentMobile":"left","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"13c371f8","hasUrl":true,"hasIcon":true,"removeText":true,"ariaLabel":"instagram link","backgroundColor":"","textColor":"#ffffff","backgroundColorHover":"#222222","textColorHover":"#f2f5fa","borderColor":"#ffffff","borderColorHover":"#f2f5fa","marginRight":"20","paddingTop":"6","paddingRight":"6","paddingBottom":"6","paddingLeft":"6","borderSizeTop":"2","borderSizeRight":"2","borderSizeBottom":"2","borderSizeLeft":"2","borderRadiusTopRight":"50","borderRadiusBottomRight":"50","borderRadiusBottomLeft":"50","borderRadiusTopLeft":"50","iconSize":0.8} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"926332bd","hasUrl":true,"hasIcon":true,"removeText":true,"ariaLabel":"twitter link","backgroundColor":"","textColor":"#ffffff","backgroundColorHover":"#222222","textColorHover":"#f2f5fa","borderColor":"#ffffff","borderColorHover":"#f2f5fa","marginRight":"20","paddingTop":"6","paddingRight":"6","paddingBottom":"6","paddingLeft":"6","borderSizeTop":"2","borderSizeRight":"2","borderSizeBottom":"2","borderSizeLeft":"2","borderRadiusTopRight":"50","borderRadiusBottomRight":"50","borderRadiusBottomLeft":"50","borderRadiusTopLeft":"50","iconSize":0.8} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"d957854e","hasUrl":true,"hasIcon":true,"removeText":true,"ariaLabel":"facebook link","backgroundColor":"","textColor":"#ffffff","backgroundColorHover":"#222222","textColorHover":"#f2f5fa","borderColor":"#ffffff","borderColorHover":"#f2f5fa","paddingTop":"6","paddingRight":"6","paddingBottom":"6","paddingLeft":"6","borderSizeTop":"2","borderSizeRight":"2","borderSizeBottom":"2","borderSizeLeft":"2","borderRadiusTopRight":"50","borderRadiusBottomRight":"50","borderRadiusBottomLeft":"50","borderRadiusTopLeft":"50","iconSize":0.8} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"0f87c806","paddingTop":"60","paddingRight":"0","paddingBottom":"60","paddingLeft":"0","marginTop":"60","borderSizeTop":"1","borderColor":"#ffffff","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"9cc30ed9","columns":2,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"e6861bde","isGrid":true,"gridId":"60ab45cf","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"97c10964","element":"p","textColor":"#ffffff","showAdvancedTypography":true,"fontSize":17} --\x3e © Company Name
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"7c528044","isGrid":true,"gridId":"60ab45cf","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"d060803e","alignment":"right","alignmentMobile":"left","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"907cc664","hasUrl":true,"backgroundColor":"","textColor":"#ffffff","backgroundColorHover":"","textColorHover":"#f2f5fa","showAdvancedTypography":true,"fontSize":17,"marginRight":"30"} --\x3e Privacy Policy \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"a6a340bc","hasUrl":true,"backgroundColor":"","textColor":"#ffffff","backgroundColorHover":"","textColorHover":"#f2f5fa","showAdvancedTypography":true,"fontSize":17} --\x3e Terms of Service \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e'},template_2:{label:(0,l._x)("Full footer 2","label","gp-premium"),thumbnail:"site-footer-full-2.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"e224c1dd","paddingTop":"80","paddingRight":"20","paddingBottom":"80","paddingLeft":"20","backgroundColor":"#fafbfc","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"34307d45","element":"p","alignment":"center","textColor":"#2e3d4d","showAdvancedTypography":true,"fontWeight":"bold","fontSize":14,"textTransform":"uppercase","letterSpacing":0.3,"marginTop":"10"} --\x3e Your Company Name
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"4068688a","paddingTop":"60","paddingRight":"20","paddingBottom":"60","paddingLeft":"20","marginTop":"60","marginBottom":"60","borderSizeTop":"1","borderSizeBottom":"1","borderColor":"#5c7a99","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"690686fb","columns":3,"horizontalGap":0,"verticalAlignment":"center","verticalGapMobile":40,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"12d457ad","isGrid":true,"gridId":"f5b096f9","width":32,"paddingTop":"0","paddingRight":"20","paddingBottom":"0","paddingLeft":"20","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8818b435","element":"p","alignment":"center","showAdvancedTypography":true,"fontWeight":"bold","fontSize":13,"textTransform":"uppercase","letterSpacing":0.2,"marginBottom":"0"} --\x3e PH +1 000 000 0000
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"68ec175a","isGrid":true,"gridId":"f5b096f9","width":36,"paddingTop":"0","paddingRight":"20","paddingBottom":"0","paddingLeft":"20","borderSizeRight":"1","borderSizeLeft":"1","borderSizeTopMobile":"0","borderSizeRightMobile":"0","borderSizeBottomMobile":"0","borderSizeLeftMobile":"0","borderColor":"#5c7a99","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"cf4dcfab","element":"p","alignment":"center","showAdvancedTypography":true,"fontWeight":"bold","fontSize":13,"textTransform":"uppercase","letterSpacing":0.2,"marginBottom":"0"} --\x3e 24 M Drive East Hampton, NY 11937
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"47f78435","isGrid":true,"gridId":"f5b096f9","width":32,"paddingTop":"0","paddingRight":"20","paddingBottom":"0","paddingLeft":"20","removeVerticalGapMobile":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"fd601b43","alignment":"center","marginBottom":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"2800ad9a","hasUrl":false,"hasIcon":true,"removeText":true,"textColor":"#2e3d4d","textColorHover":"#5c7a99","marginRight":"20","iconSize":0.9} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"eb98a6f6","hasUrl":false,"hasIcon":true,"removeText":true,"textColor":"#2e3d4d","textColorHover":"#5c7a99","marginRight":"20","iconSize":0.9} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"ab839eb9","hasUrl":false,"hasIcon":true,"removeText":true,"textColor":"#2e3d4d","textColorHover":"#5c7a99","marginRight":"20","iconSize":0.8} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"5b757c38","hasUrl":false,"hasIcon":true,"removeText":true,"textColor":"#2e3d4d","textColorHover":"#5c7a99","marginRight":"20","iconSize":0.8} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"424f95c0","columns":2,"verticalGapMobile":30,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"cc32f783","isGrid":true,"gridId":"90341e96","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"1e50faeb","element":"p","alignment":"left","alignmentMobile":"center","showAdvancedTypography":true,"fontWeight":"bold","fontSize":12,"textTransform":"uppercase","letterSpacing":0.2} --\x3e © Your Copyright Message
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"b706d851","isGrid":true,"gridId":"90341e96","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","removeVerticalGapMobile":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"b4f65930","alignment":"right","alignmentMobile":"center","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"373aae0d","hasUrl":false,"textColor":"#2e3d4d","textColorHover":"#5c7a99","showAdvancedTypography":true,"fontWeight":"bold","fontSize":12,"textTransform":"uppercase","letterSpacing":0.2,"marginRight":"30"} --\x3e PRIVACY POLICY \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"3cd1cf71","hasUrl":false,"textColor":"#2e3d4d","textColorHover":"#5c7a99","showAdvancedTypography":true,"fontWeight":"bold","fontSize":12,"textTransform":"uppercase","letterSpacing":0.2} --\x3e terms of service \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e'}},Be={template_1:{label:(0,l._x)("Basic layout with term buttons","label","gp-premium"),thumbnail:"content-template-basic.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"d2cafe96","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"6d7bfb40","marginBottom":"15","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"38620841","hasUrl":true,"backgroundColor":"#000000","textColor":"#ffffff","backgroundColorHover":"#222222","textColorHover":"#ffffff","showAdvancedTypography":true,"fontSize":13,"paddingTop":"5","paddingRight":"10","paddingBottom":"5","paddingLeft":"10","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicLinkType":"term-archives","gpDynamicTextReplace":"Terms","gpDynamicTextTaxonomy":"category"} --\x3e Terms \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"f593ba8c","linkColor":"#000000","linkColorHover":"#858585","showAdvancedTypography":true,"fontWeight":"bold","marginBottom":"30","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Post Title"} --\x3e Post Title \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"1ed16867","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","showAdvancedTypography":true,"fontSize":14,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"27f5a324","columns":2,"verticalAlignment":"center","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"dc72dc13","isGrid":true,"gridId":"10064c4d","widthMobile":50,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true,"gpInlinePostMeta":true} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"author-avatar","avatarRounded":true} /--\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"c7b33e8b","element":"p","marginBottom":"0","marginLeft":"10","gpDynamicTextType":"post-author","gpDynamicLinkType":"author-archives","gpDynamicTextReplace":"Author name"} --\x3e Author name
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"ec93a944","isGrid":true,"gridId":"10064c4d","widthMobile":50,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","alignment":"right","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"af8af68e","element":"p","marginBottom":"0","gpDynamicTextType":"post-date","gpDynamicTextReplace":"Post date","gpDynamicDateUpdated":true} --\x3e Post date
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"b70b46a6","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"marginTop":"30","marginBottom":"30","isDynamic":true} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"medium_large","linkTo":"single-post"} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt"} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"750"},{key:"_generate_use_theme_post_container",value:!0}]},template_2:{label:(0,l._x)("Layout with offset content","label","gp-premium"),thumbnail:"content-template-offset.jpg",content:'\x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"large","linkTo":"single-post"} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"05e7d83e","paddingTop":"20","paddingRight":"20","paddingBottom":"20","paddingLeft":"20","paddingSyncUnits":true,"marginTop":"-65","marginRight":"40","marginBottom":"20","marginLeft":"0","backgroundColor":"#ffffff","zindex":1,"showAdvancedTypography":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"83898f1c","element":"p","linkColor":"#000000","linkColorHover":"#abb8c3","showAdvancedTypography":true,"fontWeight":"700","fontSize":14,"textTransform":"uppercase","marginBottom":"20","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicLinkType":"term-archives","gpDynamicTextReplace":"Category","gpDynamicTextTaxonomy":"category"} --\x3e Category
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"98a0e67b","showAdvancedTypography":true,"fontSize":28,"gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Title"} --\x3e Title \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","excerptLength":25,"useThemeMoreLink":false} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"fed802f7","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"marginTop":"20","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"ee363d21","columns":2,"horizontalGap":0,"verticalAlignment":"flex-end","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"74fcc8db","isGrid":true,"gridId":"b23efd25","width":66.66,"widthMobile":66.66,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","marginTop":"15","isDynamic":true,"gpInlinePostMeta":true} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"author-avatar","avatarSize":35,"avatarRounded":true} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"33ed7660","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","marginLeft":"10","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"2def9732","element":"p","borderColor":"","showAdvancedTypography":true,"fontSize":15,"marginBottom":"0","borderSizeRight":"0","gpDynamicTextType":"post-author","gpDynamicTextReplace":"Post author name"} --\x3e Post author name
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"dd34513e","element":"p","showAdvancedTypography":true,"fontSize":12,"marginRight":"10","marginBottom":"0","borderSizeBottom":"0","gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicDateUpdated":true} --\x3e Date
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"6d144082","isGrid":true,"gridId":"b23efd25","width":33.33,"widthMobile":33.33,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","marginTop":"15","verticalAlignment":"center","alignment":"right","isDynamic":true,"gpInlinePostMetaJustify":"flex-end"} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"ee5c36a9","alignment":"right","marginTop":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"7c89fc64","hasUrl":true,"backgroundColor":"","textColor":"#000000","backgroundColorHover":"","textColorHover":"#abb8c3","fontWeight":"700","textTransform":"uppercase","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","gpDynamicLinkType":"single-post"} --\x3e More \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"500"},{key:"_generate_use_theme_post_container",value:!1}]},template_3:{label:(0,l._x)("Layout with featured image overlay","label","gp-premim"),thumbnail:"content-template-overlay.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"99e0f8fe","minHeight":420,"paddingTop":"20","paddingRight":"20","paddingBottom":"20","paddingLeft":"20","borderRadiusTopRight":"12","borderRadiusBottomRight":"12","borderRadiusBottomLeft":"12","borderRadiusTopLeft":"12","gradient":true,"gradientDirection":180,"gradientColorOne":"#000000","gradientColorOneOpacity":0.62,"gradientColorTwoOpacity":0,"gradientSelector":"pseudo-element","textColor":"#ffffff","linkColor":"#ffffff","linkColorHover":"#ffffff","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"isDynamic":true,"gpDynamicImageBg":"featured-image"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"864271b1","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"marginBottom":"10","isDynamic":true,"gpInlinePostMeta":true,"gpInlinePostMetaJustify":"space-between"} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"bc0ec4fa","element":"p","showAdvancedTypography":true,"fontWeight":"700","fontSize":13,"textTransform":"uppercase","marginRight":"10","marginBottom":"0","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicTextReplace":"Category","gpDynamicTextTaxonomy":"category","gpDynamicTextTaxonomySeparator":" / "} --\x3e Category
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"5e2dac4c","element":"p","alignment":"right","showAdvancedTypography":true,"fontSize":12,"marginBottom":"0","hasIcon":true,"iconSize":1.4,"gpDynamicTextType":"comments-number","gpDynamicTextReplace":"COMMENTS","gpDynamicNoCommentsText":"0","gpDynamicSingleCommentText":"1","gpDynamicMultipleCommentsText":"%"} --\x3e COMMENTS
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"b1e898af","showAdvancedTypography":true,"fontSize":24,"marginUnit":"%","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Title"} --\x3e Title \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"3413b754","alignment":"right","marginTop":"300","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"95f40917","hasUrl":true,"backgroundColor":"#ffffff","textColor":"#000000","backgroundColorHover":"#ffffff","backgroundColorHoverOpacity":0.75,"textColorHover":"#000000","borderColor":"#ffffff","borderColorHover":"#ffffff","showAdvancedTypography":true,"fontWeight":"700","fontSize":12,"textTransform":"uppercase","paddingTop":"10","paddingRight":"20","paddingBottom":"10","paddingLeft":"20","borderSizeTop":"1","borderSizeRight":"1","borderSizeBottom":"1","borderSizeLeft":"1","borderRadiusTopRight":"8","borderRadiusBottomRight":"8","borderRadiusBottomLeft":"8","borderRadiusTopLeft":"8","gpDynamicLinkType":"single-post"} --\x3e Read More \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"500"},{key:"_generate_use_theme_post_container",value:!1}]},template_4:{label:(0,l._x)("Layout with slanted shape divider","label","gp-premim"),thumbnail:"content-template-slant.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"0af7ec3a","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"borderSizeTop":"0","borderSizeRight":"0","borderSizeBottom":"0","borderSizeLeft":"0","borderColor":"#000000","isDynamic":true} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"large"} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"cc5683f8","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"marginTop":"0","marginBottom":"0","zindex":1,"showAdvancedTypography":true,"fontSize":14,"shapeDividers":[{"shape":"gb-angle-1","color":"#ffffff","colorOpacity":1,"location":"bottom","height":50,"heightTablet":"","heightMobile":"","width":100,"widthTablet":"","widthMobile":"","flipHorizontally":false,"zindex":""}],"isDynamic":true} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"7f6bf8cd","paddingTop":"0","paddingRight":"25","paddingBottom":"15","paddingLeft":"25","marginTop":"0","marginRight":"0","marginBottom":"0","marginLeft":"0","backgroundColor":"#ffffff","zindex":1,"showAdvancedTypography":true,"shapeDividers":[],"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"7fd9c317","element":"p","showAdvancedTypography":true,"fontSize":14,"marginBottom":"5","gpDynamicTextType":"post-date","gpDynamicTextReplace":"Post date","gpDynamicDateUpdated":true} --\x3e Post date
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"a8ee15fd","showAdvancedTypography":true,"fontSize":30,"marginBottom":"15","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World"} --\x3e Hello World \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","excerptLength":25,"useThemeMoreLink":false} /--\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"bc9ef703","alignment":"right","marginTop":"15","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"120ee35e","hasUrl":true,"backgroundColor":"","textColor":"#000000","backgroundColorHover":"#222222","textColorHover":"#ffffff","showAdvancedTypography":true,"fontWeight":"700","textTransform":"uppercase","paddingTop":"15","paddingRight":"20","paddingBottom":"15","paddingLeft":"20","gpDynamicLinkType":"single-post"} --\x3e Read More \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"500"},{key:"_generate_use_theme_post_container",value:!1}]},template_5:{label:(0,l._x)("Layout with centered content","label","gp-premim"),thumbnail:"content-template-centered.jpg",content:'\x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"large"} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"5a785d21","paddingTop":"25","paddingRight":"25","paddingBottom":"25","paddingLeft":"25","paddingSyncUnits":true,"backgroundColor":"#ffffff","alignment":"center","showAdvancedTypography":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"82629d5c","linkColor":"#000000","showAdvancedTypography":true,"fontWeight":"700","fontSize":25,"gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World"} --\x3e Hello World \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","excerptLength":15,"useThemeMoreLink":false} /--\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"ad806696","alignment":"center","marginTop":"20","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"a1b8a609","hasUrl":true,"backgroundColor":"#cf2e2e","textColor":"#ffffff","backgroundColorHover":"#222222","textColorHover":"#ffffff","showAdvancedTypography":true,"fontSize":15,"textTransform":"uppercase","paddingTop":"8","paddingRight":"20","paddingBottom":"8","paddingLeft":"20","borderRadiusTopRight":"50","borderRadiusBottomRight":"50","borderRadiusBottomLeft":"50","borderRadiusTopLeft":"50","gpDynamicLinkType":"single-post"} --\x3e Read more \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"500"},{key:"_generate_use_theme_post_container",value:!1}]},template_6:{label:(0,l._x)("Layout with borders","label","gp-premim"),thumbnail:"content-template-borders.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"0af4cc7c","paddingTop":"5","paddingRight":"5","paddingBottom":"5","paddingLeft":"5","paddingSyncUnits":true,"borderSizeTop":"1","borderSizeRight":"1","borderSizeBottom":"1","borderSizeLeft":"1","borderRadiusTopRight":"2","borderRadiusBottomRight":"2","borderRadiusBottomLeft":"2","borderRadiusTopLeft":"2","borderColor":"#b6b6b6","backgroundColor":"#ffffff","isDynamic":true} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"large"} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"b69b5c43","paddingTop":"30","paddingRight":"30","paddingBottom":"30","paddingLeft":"30","paddingSyncUnits":true,"showAdvancedTypography":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8dfa4238","element":"p","textColor":"#0693e3","showAdvancedTypography":true,"fontWeight":"700","fontSize":14,"textTransform":"uppercase","marginBottom":"5","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicLinkType":"term-archives","gpDynamicTextReplace":"Terms","gpDynamicTextTaxonomy":"category"} --\x3e Terms
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"29491daa","showAdvancedTypography":true,"fontSize":30,"marginBottom":"15","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World"} --\x3e Hello World \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","excerptLength":25,"useThemeMoreLink":false} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"d5dadc43","paddingTop":"15","paddingRight":"10","paddingBottom":"10","paddingLeft":"10","borderSizeTop":"1","borderColor":"#b6b6b6","showAdvancedTypography":true,"fontSize":14,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"3da68acd","columns":2,"verticalAlignment":"center","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"2c30b1f9","isGrid":true,"gridId":"3da68acd","widthMobile":50,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"fc06eba3","element":"p","textColor":"#b6b6b6","showAdvancedTypography":true,"fontSize":14,"marginBottom":"0","gpDynamicTextType":"post-date","gpDynamicTextReplace":"Post date","gpDynamicTextTaxonomy":"category","gpDynamicDateUpdated":true} --\x3e Post date
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"9bb8c373","isGrid":true,"gridId":"3da68acd","widthMobile":50,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"afc412f8","alignment":"right","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"0fcad1cd","hasUrl":true,"backgroundColor":"","textColor":"#0693e3","backgroundColorHover":"#222222","textColorHover":"#ffffff","borderColor":"#0693e3","borderColorHover":"#222222","textTransform":"uppercase","paddingTop":"8","paddingRight":"12","paddingBottom":"8","paddingLeft":"12","borderSizeTop":"2","borderSizeRight":"2","borderSizeBottom":"2","borderSizeLeft":"2","borderRadiusTopRight":"2","borderRadiusBottomRight":"2","borderRadiusBottomLeft":"2","borderRadiusTopLeft":"2","gpDynamicLinkType":"single-post"} --\x3e Read more \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"500"},{key:"_generate_use_theme_post_container",value:!1}]},template_7:{label:(0,l._x)("Landscape layout","label","gp-premium"),thumbnail:"content-template-landscape.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"918d68ce","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"ae18e4a9","columns":2,"verticalGapMobile":10,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"ff15641f","isGrid":true,"gridId":"ae18e4a9","width":40,"widthTablet":40,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true,"gpRemoveContainerCondition":"no-featured-image"} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"medium_large","linkTo":"single-post"} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"64596747","isGrid":true,"gridId":"ae18e4a9","width":60,"widthTablet":60,"paddingTop":"0","paddingRight":"20","paddingBottom":"10","paddingLeft":"0","paddingTopMobile":"10","paddingRightMobile":"10","paddingBottomMobile":"10","paddingLeftMobile":"10","verticalAlignment":"center","showAdvancedTypography":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"ce3f6f48","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","marginBottom":"10","showAdvancedTypography":true,"isDynamic":true,"gpInlinePostMeta":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"fdbba1f9","element":"p","showAdvancedTypography":true,"fontWeight":"900","fontSize":14,"textTransform":"uppercase","marginRight":"10","marginBottom":"0","paddingRight":"10","borderSizeRight":"1","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicTextReplace":"Category","gpDynamicTextTaxonomy":"category"} --\x3e Category
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"6df4d39e","element":"p","showAdvancedTypography":true,"fontSize":14,"marginRight":"10","marginBottom":"0","gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicDateUpdated":true} --\x3e Date
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"84923e14","showAdvancedTypography":true,"fontSize":28,"marginBottom":"20","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Title"} --\x3e Title \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","excerptLength":20} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"800"},{key:"_generate_use_theme_post_container",value:!0}]}},Ee={template_1:{label:(0,l._x)("Default next and previous buttons","label","gp-premium"),thumbnail:"archive-navigation-buttons-2.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"fb6c192f","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"fe27e101","columns":2,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"af38c5d0","isGrid":true,"gridId":"fe27e101","widthMobile":50,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"9396ea35","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"aa4ef21a","hasUrl":true,"hasIcon":true,"backgroundColor":"","textColor":"","backgroundColorHover":"","textColorHover":"","className":"button","gpDynamicLinkType":"previous-posts"} --\x3e Previous \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"4f3ab895","isGrid":true,"gridId":"fe27e101","widthMobile":50,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"8fcd7911","alignment":"right","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"84010058","hasUrl":true,"hasIcon":true,"iconLocation":"right","backgroundColor":"","textColor":"","backgroundColorHover":"","textColorHover":"","iconPaddingRight":"","iconPaddingLeft":"0.5","className":"button","gpDynamicLinkType":"next-posts"} --\x3e Next \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_main_content"},{key:"_generate_hook_priority",value:"20"},{key:"_generate_disable_archive_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!0}]},template_2:{label:(0,l._x)("Rounded buttons with icon","label","gp-premium"),thumbnail:"archive-navigation-buttons-1.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"5edb5029","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button-container {"uniqueId":"c7866401","alignment":"center","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"4c23c469","hasUrl":true,"hasIcon":true,"removeText":true,"ariaLabel":"Previous page","backgroundColor":"#ffffff","textColor":"#000000","backgroundColorHover":"#222222","textColorHover":"#ffffff","borderColor":"#000000","marginTop":"5","marginRight":"5","marginBottom":"5","marginLeft":"5","paddingTop":"20","paddingRight":"20","paddingBottom":"20","paddingLeft":"20","borderSizeTop":"1","borderSizeRight":"1","borderSizeBottom":"1","borderSizeLeft":"1","borderRadiusTopRight":"100","borderRadiusBottomRight":"100","borderRadiusBottomLeft":"100","borderRadiusTopLeft":"100","gpDynamicLinkType":"previous-posts"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"55622f43","hasUrl":true,"hasIcon":true,"removeText":true,"ariaLabel":"Next page","backgroundColor":"#ffffff","textColor":"#000000","backgroundColorHover":"#222222","textColorHover":"#ffffff","borderColor":"#000000","marginTop":"5","marginRight":"5","marginBottom":"5","marginLeft":"5","paddingTop":"20","paddingRight":"20","paddingBottom":"20","paddingLeft":"20","borderSizeTop":"1","borderSizeRight":"1","borderSizeBottom":"1","borderSizeLeft":"1","borderRadiusTopRight":"100","borderRadiusBottomRight":"100","borderRadiusBottomLeft":"100","borderRadiusTopLeft":"100","gpDynamicLinkType":"next-posts"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/button-container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_main_content"},{key:"_generate_hook_priority",value:"20"},{key:"_generate_disable_archive_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!1}]}},Oe={template_1:{label:(0,l._x)("Basic single post page hero","label","gp-premium"),thumbnail:"page-hero-basic.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"8b6d1c4b","paddingTop":"150","paddingBottom":"150","backgroundColor":"#000000","textColor":"#ffffff","linkColor":"#ffffff","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"bgOptions":{"selector":"pseudo-element","opacity":0.3,"overlay":false,"position":"center center","size":"cover","repeat":"no-repeat","attachment":""},"alignment":"center","isDynamic":true,"gpDynamicImageBg":"featured-image"} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"62a8b2cc","element":"h1","showAdvancedTypography":true,"fontSize":50,"gpDynamicTextType":"title","gpDynamicTextReplace":"Page Title"} --\x3e Page Title \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"f49b9f49","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"isDynamic":true,"gpInlinePostMeta":true,"gpInlinePostMetaJustify":"center"} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"author-avatar","avatarRounded":true} /--\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"2e715b13","element":"p","marginBottom":"0","marginLeft":"10","gpDynamicTextType":"post-author","gpDynamicTextReplace":"Author name"} --\x3e Author name
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"dedbe2c8","element":"p","marginBottom":"0","marginLeft":"20","paddingLeft":"20","borderSizeLeft":"1","gpDynamicTextType":"post-date","gpDynamicTextReplace":"Post date","gpDynamicDateUpdated":true} --\x3e Post date
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_header"},{key:"_generate_disable_title",value:!0},{key:"_generate_disable_featured_image",value:!0},{key:"_generate_disable_primary_post_meta",value:!0}]},template_2:{label:(0,l._x)("Single post hero with excerpt","label","gp-premium"),thumbnail:"page-hero-excerpt.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"70385d72","paddingTop":"80","paddingRight":"40","paddingBottom":"80","paddingLeft":"40","isDynamic":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"5dc55b95","columns":2,"horizontalGap":80,"verticalGap":20,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"579e5b87","isGrid":true,"gridId":"fde86e48","width":45,"widthTablet":60,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","verticalAlignment":"center","showAdvancedTypography":true,"fontSize":14,"isDynamic":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"d909e043","paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","paddingSyncUnits":true,"marginBottom":"10","isDynamic":true,"gpInlinePostMeta":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"9fdb86dc","element":"p","textColor":"#000000","linkColor":"#000000","showAdvancedTypography":true,"fontWeight":"900","fontSize":14,"textTransform":"uppercase","marginRight":"10","marginBottom":"0","paddingRight":"10","borderSizeRight":"1","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicLinkType":"term-archives","gpDynamicTextReplace":"Category","gpDynamicTextTaxonomy":"category"} --\x3e Category
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"1ee4cbcf","element":"p","showAdvancedTypography":true,"fontSize":14,"marginRight":"10","marginBottom":"0","gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicDateUpdated":true} --\x3e Date
\x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"56c7eb13","marginBottom":"10","gpDynamicTextType":"title","gpDynamicTextReplace":"Title"} --\x3e Title \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","useThemeMoreLink":false} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"4e92c4e8","isGrid":true,"gridId":"fde86e48","width":55,"widthTablet":40,"minHeight":400,"minHeightMobile":250,"paddingTop":"0","paddingRight":"0","paddingBottom":"0","paddingLeft":"0","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"bgOptions":{"selector":"element","opacity":1,"overlay":false,"position":"center center","size":"cover","repeat":"no-repeat","attachment":""},"isDynamic":true,"gpDynamicImageBg":"featured-image","gpUseFallbackImageBg":true} /--\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_header"},{key:"_generate_disable_title",value:!0},{key:"_generate_disable_featured_image",value:!0},{key:"_generate_disable_primary_post_meta",value:!0}]}},Pe=window.wp.plugins,Me=window.wp.editPost,ze=window.wp.data,qe=window.wp.domReady,je=n.n(qe);function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function He(e){for(var t=1;t0&&S(r)}},void 0!==z[e].thumbnail&&!!z[e].thumbnail&&(0,o.createElement)(J.ZP,{overflow:!0,once:!0},(0,o.createElement)("img",{src:gpPremiumBlockElements.templateImageUrl+"/"+z[e].thumbnail,alt:z[e].label})),(0,o.createElement)("div",{className:"gpp-block-template-label"},z[e].label))})))),("right-sidebar"===c||"left-sidebar"===c)&&(0,o.createElement)(p.Notice,{status:"info",isDismissible:!1,className:"gpp-block-element-notice"},(0,l.__)("This will remove the current sidebar widgets for the selected sidebar. Your layout must have a sidebar set for this Element to show.","gp-premium")),"site-footer"===c&&(0,o.createElement)(p.BaseControl,null,(0,o.createElement)(p.Notice,{status:"info",isDismissible:!1,className:"gpp-block-element-notice"},(0,l.__)("This Element will replace your site footer area that holds your copyright message. It will not replace footer widgets if they exist.","gp-premium"))),"post-meta-template"===c&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.SelectControl,{label:(0,l.__)("Location","gp-premium"),value:m,options:[{label:(0,l.__)("After post title","gp-premium"),value:"after-post-title"},{label:(0,l.__)("Before post title","gp-premium"),value:"before-post-title"},{label:(0,l.__)("After content","gp-premium"),value:"after-content"},{label:(0,l.__)("Custom","gp-premium"),value:"custom"}],onChange:function(e){S({_generate_post_meta_location:e})}})),M.length>1&&(0,o.createElement)(p.SelectControl,{label:(0,l.__)("Quick hook select","gp-premium"),value:s||"",options:M,onChange:function(e){S({_generate_hook:e})}}),(!c||"hook"===c||"page-hero"===c||"post-navigation-template"===c||"archive-navigation-template"===c||"post-meta-template"===c&&"custom"===m)&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.BaseControl,{id:"gpp-hook-select",label:(0,l.__)("Hook name","gp-premium"),className:"gpp-hook-select"},(0,o.createElement)(Se,{options:E,className:function(e){return"container"===e?"gpp-block-element-search-select":"input"===e?"components-text-control__input":"select-search__"+e},value:s,placeholder:(0,l.__)("Choose your hook","gp-premium"),search:!0,onChange:function(e){e!==s&&S({_generate_hook:e||""})}})),"custom"===s&&(0,o.createElement)(p.TextControl,{label:(0,l.__)("Custom hook name","gp-premium"),type:"text",onChange:function(e){S({_generate_custom_hook:e||""})},value:d||""}),!!s&&(0,o.createElement)(p.TextControl,{label:(0,l.__)("Priority","gp-premium"),type:"text",onChange:function(e){S({_generate_hook_priority:e||""})},value:g||"",placeholder:"10"})),"post-meta-template"===c&&(0,o.createElement)(o.Fragment,null,(""===m||"after-post-title"===m||"before-post-title"===m||"custom"===m)&&(0,o.createElement)(p.ToggleControl,{checked:!!b,label:(0,l.__)("Replace default primary post meta","gp-premium"),onChange:function(e){S({_generate_disable_primary_post_meta:e})}}),("after-content"===m||"custom"===m)&&(0,o.createElement)(p.ToggleControl,{checked:!!h,label:(0,l.__)("Replace default secondary post meta","gp-premium"),onChange:function(e){S({_generate_disable_secondary_post_meta:e})}})),"content-template"===c&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.SelectControl,{label:(0,l.__)("Tag name","gp-premium"),value:u,options:[{label:"article",value:"article"},{label:"div",value:"div"},{label:"section",value:"section"},{label:"aside",value:"aside"}],onChange:function(e){S({_generate_post_loop_item_tagname:e})}}),(0,o.createElement)(p.SelectControl,{label:(0,l.__)("Apply to","gp-premium"),value:v,options:[{label:(0,l.__)("All posts","gp-premium"),value:""},{label:(0,l.__)("Posts with term","gp-premium"),value:"has-term"},{label:(0,l.__)("Posts with custom field","gp-premium"),value:"has-post-meta"},{label:(0,l.__)("First post","gp-premium"),value:"is-first-post"}],onChange:function(e){S({_generate_post_loop_item_display:e})}}),""!==v&&(0,o.createElement)(o.Fragment,null,"has-term"===v&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.SelectControl,{label:(0,l.__)("Taxonomy","gp-premium"),value:_,options:O,onChange:function(e){S({_generate_post_loop_item_display_tax:e})}}),!!_&&(0,o.createElement)(p.TextControl,{label:(0,l.__)("Term name","gp-premium"),type:"text",onChange:function(e){S({_generate_post_loop_item_display_term:e||""})},value:k||""})),"has-post-meta"===v&&(0,o.createElement)(p.TextControl,{label:(0,l.__)("Post meta name","gp-premium"),type:"text",onChange:function(e){S({_generate_post_loop_item_display_post_meta:e||""})},value:w||""}),q.length>0&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.BaseControl,null,(0,o.createElement)(p.ComboboxControl,{className:"editor-page-attributes__parent",label:(0,l.__)("Parent Element","gp-premium"),help:(0,l.__)("Set a parent Element to inherit in case the above conditions do not apply.","gp-premim"),value:L,options:q,onFilterValueChange:function(e){e&&Y()(I(e),300)},onChange:function(e){I(e)}})),!!L&&(0,o.createElement)(p.TextControl,{type:"number",label:(0,l.__)("Display Order","gp-premium"),onChange:function(e){R(e)},value:B}))),(0,o.createElement)(p.ToggleControl,{checked:!!x,label:(0,l.__)("Keep default post container","gp-premium"),onChange:function(e){S({_generate_use_theme_post_container:e})}})),"page-hero"===c&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.ToggleControl,{checked:!!f,label:(0,l.__)("Disable title","gp-premium"),onChange:function(e){S({_generate_disable_title:e})}}),(0,o.createElement)(p.ToggleControl,{checked:!!y,label:(0,l.__)("Disable featured image","gp-premium"),onChange:function(e){S({_generate_disable_featured_image:e})}}),(0,o.createElement)(p.ToggleControl,{checked:!!b,label:(0,l.__)("Disable primary post meta","gp-premium"),onChange:function(e){S({_generate_disable_primary_post_meta:e})}})),"site-footer"===c&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.TextControl,{className:"gpp-block-dynamic-year",type:"text",readOnly:!0,value:"{{current_year}}",label:(0,l.__)("Current year template tag","gp-premium"),help:(0,l.__)("Use the above template tag to add the current year to your footer.","gp-premium")})),"post-navigation-template"===c&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.ToggleControl,{checked:!!T,label:(0,l.__)("Disable default post navigation","gp-premium"),onChange:function(e){S({_generate_disable_post_navigation:e})}}),(0,o.createElement)(p.ToggleControl,{checked:!!D,label:(0,l.__)("Add default archive navigation container","gp-premium"),onChange:function(e){S({_generate_use_archive_navigation_container:e})}})),"archive-navigation-template"===c&&(0,o.createElement)(o.Fragment,null,(0,o.createElement)(p.ToggleControl,{checked:!!C,label:(0,l.__)("Disable default pagination","gp-premium"),onChange:function(e){S({_generate_disable_archive_navigation:e})}}),(0,o.createElement)(p.ToggleControl,{checked:!!D,label:(0,l.__)("Keep default archive navigation container","gp-premium"),onChange:function(e){S({_generate_use_archive_navigation_container:e})}}))))}}]),r}(o.Component),Fe=(0,ze.withSelect)((function(e){var t=e("core/editor").getEditedPostAttribute;return{meta:t("meta"),elementParent:t("parent"),elementMenuOrder:t("menu_order")}})),Ue=(0,ze.withDispatch)((function(e,t){var n=t.meta,a=e("core/editor").editPost;return{updateMeta:function(e){a({meta:He(He({},n),e)})},updateParentId:function(e){a({parent:e})},updateOrder:function(e){a({menu_order:e})}}})),Ge=(0,s.compose)([Fe,Ue])(Ne);(0,Pe.registerPlugin)("generatepress-block-element",{icon:null,render:Ge}),je()((function(){return(0,Pe.unregisterPlugin)("generatepress-content-width")}))}()}();
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.asset.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.asset.php
new file mode 100644
index 00000000..80a8ab7c
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.asset.php
@@ -0,0 +1 @@
+ array('wp-hooks', 'wp-i18n'), 'version' => '71ce575bd9a3b2ae77bd');
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.js
new file mode 100644
index 00000000..33e0585a
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.js
@@ -0,0 +1 @@
+!function(){"use strict";function e(o){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(o)}function o(o,r,t){return(r=function(o){var r=function(o,r){if("object"!==e(o)||null===o)return o;var t=o[Symbol.toPrimitive];if(void 0!==t){var n=t.call(o,"string");if("object"!==e(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(o)}(o);return"symbol"===e(r)?r:String(r)}(r))in o?Object.defineProperty(o,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):o[r]=t,o}var r=window.wp.hooks,t=window.wp.i18n;function n(e,o){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);o&&(t=t.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),r.push.apply(r,t)}return r}function a(e){for(var r=1;r array('wp-api-fetch', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => '204b0a224864701c559a');
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.js
new file mode 100644
index 00000000..ce2c1579
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.js
@@ -0,0 +1 @@
+!function(){var e,t={520:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function s(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,"string");if("object"!==r(s))return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===r(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:p;a(!0),w(!!e);var t=document.querySelector(".generatepress-dashboard__section-item-message");t.classList.remove("generatepress-dashboard__section-item-message__show"),d()({path:"/generatepress-pro/v1/license",method:"POST",data:{key:e,status:_}}).then((function(e){a(!1),t.classList.add("generatepress-dashboard__section-item-message__show"),e.success&&e.response?(t.classList.remove("generatepress-dashboard__section-item-message__error"),"valid"===e.response.license?t.textContent=(0,c.__)("License key activated.","gp-premium"):"deactivated"===e.response.license?t.textContent=(0,c.__)("License key deactivated.","gp-premium"):t.textContent=e.response,f(e.response.license),setTimeout((function(){t.classList.remove("generatepress-dashboard__section-item-message__show")}),3e3)):(t.classList.add("generatepress-dashboard__section-item-message__error"),t.textContent=e.response)}))};return(0,i.createElement)(i.Fragment,null,(0,i.createElement)("div",{className:"generatepress-dashboard__section generatepress-license-key-area"},(0,i.createElement)("div",{className:"generatepress-dashboard__section-title"},(0,i.createElement)("h2",null,(0,c.__)("License Key","gp-premium")),(0,i.createElement)("span",{className:"generatepress-dashboard__section-item-message"})),(0,i.createElement)("div",{className:"generatepress-dashboard__section-item"},(0,i.createElement)(l.Notice,{className:"generatepress-dashboard__section-license-notice",isDismissible:!1,status:"valid"===_?"success":"warning"},"valid"===_?(0,i.createElement)("span",null,(0,c.__)("Receiving premium updates.","gp-premium")):(0,i.createElement)("span",null,(0,c.__)("Not receiving premium updates.","gp-premium"))),(0,i.createElement)("div",{className:"generatepress-dashboard__section-license-key"},E?(0,i.createElement)(l.TextControl,{type:"text",autoComplete:"off",value:p,disabled:!0}):(0,i.createElement)(i.Fragment,null,(0,i.createElement)(l.TextControl,{placeholder:(0,c.__)("Enter your license key to activate updates.","gp-premium"),type:"text",autoComplete:"off",onChange:function(e){return u(e)}}),!!p&&(0,i.createElement)(l.Button,{variant:"primary",disabled:!!s,onClick:function(){return S()}},s&&(0,i.createElement)(l.Spinner,null),!s&&(0,c.__)("Save key"))),!!E&&!!p&&(0,i.createElement)(l.Button,{variant:"primary",onClick:function(){u(""),S("")}},(0,c.__)("Clear key","generateblocks"))),""!==p&&(0,i.createElement)("div",{className:"generatepress-dashboard__section-beta-tester"},(0,i.createElement)(l.ToggleControl,{label:(0,c.__)("Receive development version updates"),help:(0,c.__)("Get alpha, beta, and release candidate updates directly to your Dashboard.","gp-premium"),checked:!!b,onChange:function(e){v(e),function(e){var t=document.querySelector(".generatepress-dashboard__section-item-message");t.classList.remove("generatepress-dashboard__section-item-message__show"),d()({path:"/generatepress-pro/v1/beta",method:"POST",data:{beta:e}}).then((function(e){a(!1),t.classList.add("generatepress-dashboard__section-item-message__show"),e.success&&e.response?(t.classList.remove("generatepress-dashboard__section-item-message__error"),t.textContent=e.response,setTimeout((function(){t.classList.remove("generatepress-dashboard__section-item-message__show")}),3e3)):(t.classList.add("generatepress-dashboard__section-item-message__error"),t.textContent=e.response)}))}(e)}})))))};window.addEventListener("DOMContentLoaded",(function(){(0,i.render)((0,i.createElement)(h,null),document.getElementById("generatepress-license-key"))}));var b=function(){var e=o((0,i.useState)(!1),2),t=e[0],n=e[1],s=o((0,i.useState)(!1),2),a=s[0],m=s[1],p=o((0,i.useState)(!1),2),g=p[0],_=p[1],f=o((0,i.useState)(!1),2),h=f[0],b=f[1],v=o((0,i.useState)("all"),2),y=v[0],E=v[1];return(0,i.useEffect)((function(){t||n(!0)})),t?(0,i.createElement)(i.Fragment,null,(0,i.createElement)("div",{className:"generatepress-dashboard__section"},(0,i.createElement)("div",{className:"generatepress-dashboard__section-title"},(0,i.createElement)("h2",null,(0,c.__)("Import / Export","gp-premium"))),(0,i.createElement)("div",{className:"generatepress-dashboard__section-item"},(0,i.createElement)("div",{className:"generatepress-dashboard__section-item-content"},(0,i.createElement)("div",{className:"generatepress-dashboard__section-item-title"},(0,c.__)("Export","gp-premium")),(0,i.createElement)("div",{className:"generatepress-dashboard__section-item-description"},(0,c.__)("Export your customizer settings.","gp-premium"))),(0,i.createElement)("div",{className:"generatepress-dashboard__section-item-action"},(0,i.createElement)("span",{className:"generatepress-dashboard__section-item-message"}),(0,i.createElement)(l.ButtonGroup,{className:"generatepress-dashboard__section-item-export-type"},(0,i.createElement)(l.Button,{isPrimary:"all"===y,onClick:function(){return E("all")}},(0,c.__)("All","gp-premium")),(0,i.createElement)(l.Button,{isPrimary:"global-colors"===y,onClick:function(){return E("global-colors")}},(0,c.__)("Global Colors","gp-premium")),(0,i.createElement)(l.Button,{isPrimary:"typography"===y,onClick:function(){return E("typography")}},(0,c.__)("Typography","gp-premium"))),(0,i.createElement)(l.Button,{disabled:!!a,isPrimary:!0,onClick:function(e){return function(e){m(!0);var t=e.target.previousElementSibling.previousElementSibling;d()({path:"/generatepress-pro/v1/export",method:"POST",data:{items:!1,type:y}}).then((function(e){if(m(!1),t.classList.add("generatepress-dashboard__section-item-message__show"),"object"===r(e.response)?t.textContent=(0,c.__)("Options exported","gp-premium"):t.textContent=e.response,e.success&&e.response){var n=(new Date).toISOString().slice(0,10),s="generatepress-settings-"+y+"-"+n+".json",a=new Blob([JSON.stringify(e.response)],{type:"application/json",name:s});u()(a,s),setTimeout((function(){t.classList.remove("generatepress-dashboard__section-item-message__show")}),3e3)}else t.classList.add("generatepress-dashboard__section-item-message__error")}))}(e)}},!!a&&(0,i.createElement)(l.Spinner,null),!a&&(0,c.__)("Export","gp-premium")))),(0,i.createElement)("div",{className:"generatepress-dashboard__section-item"},(0,i.createElement)("div",{className:"generatepress-dashboard__section-item-content"},(0,i.createElement)("div",{className:"generatepress-dashboard__section-item-title"},(0,c.__)("Import","gp-premium")),(0,i.createElement)("div",{className:"generatepress-dashboard__section-item-description"},(0,c.__)("Import your customizer settings.","gp-premium"))),(0,i.createElement)("div",{className:"generatepress-dashboard__section-item-action"},(0,i.createElement)("span",{className:"generatepress-dashboard__section-item-message"}),(0,i.createElement)("input",{type:"file",accept:".json",onChange:function(e){var t=new FileReader;t.onloadend=function(){var e=t.result;(e=JSON.parse(e))&&b(e)},t.readAsText(e.target.files[0])}}),(0,i.createElement)(l.Button,{disabled:!!g||!h,isPrimary:!0,onClick:function(e){window.confirm((0,c.__)("This can overwrite existing settings and cannot be undone.","gp-premium"))&&function(e){_(!0);var t=e.target.previousElementSibling.previousElementSibling,n=e.target.previousElementSibling;n.style.display="none",d()({path:"/generatepress-pro/v1/import",method:"POST",data:{import:h}}).then((function(e){_(!1),t.classList.add("generatepress-dashboard__section-item-message__show"),"object"===r(e.response)?t.textContent=(0,c.__)("Options imported.","gp-premium"):t.textContent=e.response,e.success&&e.response?setTimeout((function(){t.classList.remove("generatepress-dashboard__section-item-message__show"),n.style.display="block",n.value=""}),3e3):t.classList.add("generatepress-dashboard__section-item-message__error")}))}(e)}},!!g&&(0,i.createElement)(l.Spinner,null),!g&&(0,c.__)("Import","gp-premium")))))):(0,i.createElement)(l.Placeholder,{className:"generatepress-dashboard__placeholder"},(0,i.createElement)(l.Spinner,null))};window.addEventListener("DOMContentLoaded",(function(){(0,i.render)((0,i.createElement)(b,null),document.getElementById("generatepress-import-export-pro"))}));var v=function(){var e=o((0,i.useState)(!1),2),t=e[0],n=e[1],s=o((0,i.useState)(!1),2),a=s[0],m=s[1];return(0,i.useEffect)((function(){t||n(!0)})),t?(0,i.createElement)(i.Fragment,null,(0,i.createElement)("div",{className:"generatepress-dashboard__section"},(0,i.createElement)("div",{className:"generatepress-dashboard__section-title",style:{marginBottom:0}},(0,i.createElement)("h2",null,(0,c.__)("Reset","gp-premium"))),(0,i.createElement)("div",{className:"generatepress-dashboard__section-item-description",style:{marginTop:0}},(0,c.__)("Reset your customizer settings.","gp-premium")),(0,i.createElement)(l.Button,{className:"generatepress-dashboard__reset-button",style:{marginTop:"10px"},disabled:!!a,isPrimary:!0,onClick:function(e){window.confirm((0,c.__)("This will delete all of your customizer settings. It cannot be undone.","gp-premium"))&&function(e){m(!0);var t=e.target.nextElementSibling;d()({path:"/generatepress-pro/v1/reset",method:"POST",data:{items:!1}}).then((function(e){m(!1),t.classList.add("generatepress-dashboard__section-item-message__show"),"object"===r(e.response)?t.textContent=(0,c.__)("Settings reset.","gp-premium"):t.textContent=e.response,e.success&&e.response?setTimeout((function(){t.classList.remove("generatepress-dashboard__section-item-message__show")}),3e3):t.classList.add("generatepress-dashboard__section-item-message__error")}))}(e)}},!!a&&(0,i.createElement)(l.Spinner,null),!a&&(0,c.__)("Reset","gp-premium")),(0,i.createElement)("span",{className:"generatepress-dashboard__section-item-message",style:{marginLeft:"10px"}}))):(0,i.createElement)(l.Placeholder,{className:"generatepress-dashboard__placeholder"},(0,i.createElement)(l.Spinner,null))};window.addEventListener("DOMContentLoaded",(function(){(0,i.render)((0,i.createElement)(v,null),document.getElementById("generatepress-reset-pro"))}))},162:function(e,t,n){var r,s;void 0===(s="function"==typeof(r=function(){"use strict";function t(e,t,n){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){i(r.response,t,n)},r.onerror=function(){console.error("could not download file")},r.send()}function r(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function s(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(n){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var a="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n.g&&n.g.global===n.g?n.g:void 0,o=a.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),i=a.saveAs||("object"!=typeof window||window!==a?function(){}:"download"in HTMLAnchorElement.prototype&&!o?function(e,n,o){var i=a.URL||a.webkitURL,c=document.createElement("a");n=n||e.name||"download",c.download=n,c.rel="noopener","string"==typeof e?(c.href=e,c.origin===location.origin?s(c):r(c.href)?t(e,n,o):s(c,c.target="_blank")):(c.href=i.createObjectURL(e),setTimeout((function(){i.revokeObjectURL(c.href)}),4e4),setTimeout((function(){s(c)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,n,a){if(n=n||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}(e,a),n);else if(r(e))t(e,n,a);else{var o=document.createElement("a");o.href=e,o.target="_blank",setTimeout((function(){s(o)}))}}:function(e,n,r,s){if((s=s||open("","_blank"))&&(s.document.title=s.document.body.innerText="downloading..."),"string"==typeof e)return t(e,n,r);var i="application/octet-stream"===e.type,c=/constructor/i.test(a.HTMLElement)||a.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||i&&c||o)&&"undefined"!=typeof FileReader){var m=new FileReader;m.onloadend=function(){var e=m.result;e=l?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),s?s.location.href=e:location=e,s=null},m.readAsDataURL(e)}else{var d=a.URL||a.webkitURL,p=d.createObjectURL(e);s?s.location=p:location.href=p,s=null,setTimeout((function(){d.revokeObjectURL(p)}),4e4)}});a.saveAs=i.saveAs=i,e.exports=i})?r.apply(t,[]):r)||(e.exports=s)}},n={};function r(e){var s=n[e];if(void 0!==s)return s.exports;var a=n[e]={exports:{}};return t[e].call(a.exports,a,a.exports,r),a.exports}r.m=t,e=[],r.O=function(t,n,s,a){if(!n){var o=1/0;for(m=0;m=a)&&Object.keys(r.O).every((function(e){return r.O[e](n[c])}))?n.splice(c--,1):(i=!1,a0&&e[m-1][2]>a;m--)e[m]=e[m-1];e[m]=[n,s,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={966:0,100:0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var s,a,o=n[0],i=n[1],c=n[2],l=0;if(o.some((function(t){return 0!==e[t]}))){for(s in i)r.o(i,s)&&(r.m[s]=i[s]);if(c)var m=c(r)}for(t&&t(n);l array('wp-edit-post', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-plugins'), 'version' => '27f43589f8077aec0cae');
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.css
new file mode 100644
index 00000000..4d7bafd0
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.css
@@ -0,0 +1 @@
+.gpp-active-element-type{color:#555;font-size:11px;text-transform:uppercase}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.js
new file mode 100644
index 00000000..4b21bd3b
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.js
@@ -0,0 +1 @@
+!function(){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(t,n){for(var r=0;r array('react', 'wp-api-fetch', 'wp-components', 'wp-element', 'wp-html-entities', 'wp-i18n'), 'version' => 'c153dcc4d45dc270e00f');
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.css
new file mode 100644
index 00000000..578ed157
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.css
@@ -0,0 +1 @@
+.generatepress-site-library{box-sizing:border-box;margin:40px auto 0;max-width:1200px;padding:0 20px}.generatepress-site-library .generatepress-site-library-opened{bottom:0;display:flex;height:100vh;left:0;position:fixed;right:0;top:0;width:100%;z-index:99999}.generatepress-site-library .generatepress-site-library-info{background:#fff;border-left:1px solid #ddd;padding-bottom:50px;position:relative;width:300px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header{border-bottom:1px solid #ddd;display:flex;justify-content:space-between;padding-left:20px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header .has-author{margin-bottom:0}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header .site-library-author{color:#777;display:block;font-size:11px;margin-bottom:1em;margin-top:3px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header button{border-left:1px solid #ddd;height:auto}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-footer{border-top:1px solid #ddd;bottom:0;display:flex;left:0;position:absolute;right:0}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-footer button{flex-grow:1;font-size:20px;height:50px;justify-content:center}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-footer button:not(:last-child){border-right:1px solid #ddd}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content{box-sizing:border-box;height:calc(100% - 53px);overflow-y:auto;padding:20px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content>:first-child{margin-top:0}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content h3{margin-top:30px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content h3+.gpp-library-action-button{margin-top:10px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-plugins{font-size:12px;list-style-type:disc;margin-bottom:0;margin-left:1.5em}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-plugins li{margin-bottom:0}.generatepress-site-library .generatepress-site-library-iframe{background:#fff;display:flex;justify-content:center;width:calc(100% - 300px)}.generatepress-site-library .generatepress-site-library-iframe iframe{height:100%;width:100%}.generatepress-site-library .gpp-library-action-button{align-items:center;display:flex;margin-top:30px}.generatepress-site-library .gpp-library-action-button button .components-spinner{margin:0}.generatepress-site-library .gpp-library-action-button .gpp-library-action-message{padding-left:10px}.generatepress-site-library .generatepress-site-library-filter{background:#fff;border:1px solid #ddd;border-radius:4px;display:flex;margin-bottom:40px;padding:20px}.generatepress-site-library .generatepress-site-library-filter>.components-base-control{margin-right:20px}.generatepress-site-library .generatepress-site-library-filter>.components-base-control .components-base-control__field{margin-bottom:0}.generatepress-site-library .generatepress-site-library-filter .components-select-control label{font-size:11px}.generatepress-site-library-list{display:flex;flex-wrap:wrap;list-style:none;margin-left:-30px;padding:0}.generatepress-site-library-list>.generatepress-site-library-list-item{box-sizing:border-box;flex:0 0 33.333%;padding-bottom:30px;padding-left:30px;width:33.333%}@media screen and (max-width:840px){.generatepress-site-library-list>.generatepress-site-library-list-item{flex:0 0 50%;width:50%}}@media screen and (max-width:450px){.generatepress-site-library-list>.generatepress-site-library-list-item{flex:0 0 100%;width:100%}}.generatepress-site-library-list>.generatepress-site-library-list-item>button{background-color:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 0 0 2px transparent;cursor:pointer;display:block;padding:5px;text-align:center;transition:border-color .2s,box-shadow .2s;width:100%}.generatepress-site-library-list>.generatepress-site-library-list-item>button:active,.generatepress-site-library-list>.generatepress-site-library-list-item>button:focus,.generatepress-site-library-list>.generatepress-site-library-list-item>button:hover{box-shadow:0 0 0 2px #216eb7}.generatepress-site-library-list>.generatepress-site-library-list-item>button .generatepress-site-library-list-item-image{display:block;position:relative}.generatepress-site-library-list>.generatepress-site-library-list-item>button .generatepress-site-library-list-item-image img{border-top-left-radius:4px;border-top-right-radius:4px;display:block;height:auto;width:100%}.generatepress-site-library-list>.generatepress-site-library-list-item .generatepress-site-library-list-item-title{font-size:20px;padding:20px 20px 10px}.generatepress-site-library-list>.generatepress-site-library-list-item .generatepress-site-library-list-item-title .generatepress-site-library-required-version{color:#000;display:block;font-size:12px;padding-top:5px}.generatepress-site-library-restore{background:#fff;border:1px solid #ddd;padding:40px}.generatepress-site-library-restore h2{font-size:25px;margin-top:0}.components-placeholder.gpp-library-placeholder{background:transparent;border:0;box-shadow:0 0 0}.components-placeholder.gpp-library-placeholder .components-placeholder__fieldset{justify-content:center}.generatepress-site-library-no-results{padding:50px;text-align:center}.generatepress-site-library-no-results button .components-spinner,.generatepress-site-library-refresh button .components-spinner{margin:0}.generatepress-site-library-refresh{text-align:center}.appearance_page_generatepress-library #wpbody-content .metabox-holder,.appearance_page_generatepress-library #wpcontent{padding:0}.site-library-header{background-color:#fff;box-shadow:0 1px 0 rgba(200,215,225,.5),0 1px 2px #ddd;margin-bottom:40px;padding:20px}.site-library-header .site-library-container{box-sizing:border-box;display:flex;margin:0 auto;max-width:1200px;padding:0 20px}.site-library-header .library-links{margin-left:auto}.site-library-header .library-links a{display:inline-block;margin:0 10px}.site-library-header .library-title{color:#000;font-size:20px;font-weight:500}.generatepress-dashboard-tabs{box-sizing:border-box;margin:0 auto;max-width:1200px;padding:0 20px}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.js
new file mode 100644
index 00000000..c1544a89
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.js
@@ -0,0 +1,6 @@
+!function(){var e={703:function(e,t,n){"use strict";var r=n(414);function i(){}function s(){}s.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,s,a){if(a!==r){var o=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw o.name="Invariant Violation",o}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:i};return n.PropTypes=n,n}},697:function(e,t,n){e.exports=n(703)()},414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},216:function(e,t,n){"use strict";t.be=void 0;var r=function(){function e(e,t){for(var n=0;n=0&&_-E[0]<=g&&_+b+E[1]>=0}(e,n):function(e){var t=e.ref;if(!(t.offsetWidth||t.offsetHeight||t.getClientRects().length))return!1;var n=void 0,r=void 0;try{var i=t.getBoundingClientRect();n=i.top,r=i.height}catch(e){n=0,r=0}var s=window.innerHeight||document.documentElement.clientHeight,a=Array.isArray(e.props.offset)?e.props.offset:[e.props.offset,e.props.offset];return n-a[0]<=s&&n+r+a[1]>=0}(e);r?e.visible||(e.props.once&&h.push(e),e.visible=!0,e.forceUpdate()):e.props.once&&e.visible||(e.visible=!1,e.props.unmountIfInvisible&&e.forceUpdate())}},y=function(){for(var e=0;e=0?r=setTimeout(l,t-p):(r=null,n||(o=e.apply(s,i),r||(s=null,i=null)))};return function(){s=this,i=arguments,a=+new Date;var p=n&&!r;return r||(r=setTimeout(l,t)),p&&(o=e.apply(s,i),s=null,i=null),o}}},81:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.on=function(e,t,n,r){r=r||!1,e.addEventListener?e.addEventListener(t,n,r):e.attachEvent&&e.attachEvent("on"+t,(function(t){n.call(e,t||window.event)}))},t.off=function(e,t,n,r){r=r||!1,e.removeEventListener?e.removeEventListener(t,n,r):e.detachEvent&&e.detachEvent("on"+t,n)}},315:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(!(e instanceof HTMLElement))return document.documentElement;for(var t="absolute"===e.style.position,n=/(scroll|auto)/,r=e;r;){if(!r.parentNode)return e.ownerDocument||document.documentElement;var i=window.getComputedStyle(r),s=i.position,a=i.overflow,o=i["overflow-x"],l=i["overflow-y"];if("static"===s&&t)r=r.parentNode;else{if(n.test(a)&&n.test(o)&&n.test(l))return r;r=r.parentNode}}return e.ownerDocument||e.documentElement||document.documentElement}},821:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r,i;return t||(t=250),function(){var s=n||this,a=+new Date,o=arguments;r&&ae.length)&&(t=e.length);for(var n=0,r=new Array(t);na[l]?1:-1}return s.length!==a.length?-1:0}var c=window.wp.i18n,m=window.wp.components,g=window.wp.htmlEntities,h=window.wp.apiFetch,d=n.n(h);var f=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&a(e,t)}(y,e);var n,h,f,b,v=(f=y,b=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=o(f);if(b){var n=o(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return s(e)}(this,e)});function y(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,y),(e=v.apply(this,arguments)).state={allSites:{},isAPIWorking:!1,siteOpened:!1,siteData:{},siteSlug:"",sitePlugins:{},hasData:{},hasWidgets:!1,importOptions:!0,importContent:!0,confirmImport:!1,importComplete:!1,installablePlugins:[],activePlugins:[],manualPlugins:[],refreshingSites:!1,hasBackup:gppSiteLibrary.hasBackup,pageBuilder:"No Page Builder",category:"",device:"desktop"},e.importThemeOptions=e.importThemeOptions.bind(s(e)),e.installPlugins=e.installPlugins.bind(s(e)),e.activatePlugins=e.activatePlugins.bind(s(e)),e.importContent=e.importContent.bind(s(e)),e.importSiteOptions=e.importSiteOptions.bind(s(e)),e.importWidgets=e.importWidgets.bind(s(e)),e}return n=y,(h=[{key:"componentDidMount",value:function(){var e=this;d()({path:"/generatepress-site-library/v1/get_sites",method:"POST",data:{forceRefresh:!1}}).then((function(t){e.setState({isAPILoaded:!0,allSites:t.response})}))}},{key:"importThemeOptions",value:function(e){var t=this,n=e.target.nextElementSibling;n.classList.add("gpp-library-action-message--show"),n.textContent=(0,c.__)("Importing theme options","gp-premium"),d()({path:"/generatepress-site-library/v1/import_theme_options",method:"POST",data:{siteData:this.state.siteData,siteSlug:this.state.siteData.name.replace(/\s+/g,"_").toLowerCase(),importOptions:this.state.importOptions,importContent:this.state.importContent}}).then((function(e){n.textContent=e.response,e.success&&e.response||n.classList.add("gblocks-action-message--error"),setTimeout((function(){t.state.importContent?Object.keys(t.state.hasData.plugin_data).length>0?t.installPlugins(n):t.importContent(n):(n.textContent=(0,c.__)("Import Complete","gp-premium"),t.setState({isAPIWorking:!1,importComplete:!0,hasBackup:!0}))}),2e3)}))}},{key:"installPlugins",value:function(e){var n=this;void 0!==e.target&&(e=e.target.nextElementSibling),e.classList.add("gpp-library-action-message--show"),e.textContent=(0,c.__)("Installing plugins","gp-premium"),Object.entries(this.state.hasData.plugin_data).forEach((function(r){var i=t(r,2),s=i[0],a=i[1],o=a.slug.split("/")[0],l=a.name;a.installed?(delete n.state.hasData.plugin_data[s],0===Object.keys(n.state.hasData.plugin_data).length&&n.activatePlugins(e)):("bb-plugin"===o&&(o="beaver-builder-lite-version",l="Beaver Builder Lite"),e.textContent=(0,c.sprintf)(/* translators: Installing "Plugin Name" */
+(0,c.__)("Installing %s","gp-premium"),l),wp.updates.installPlugin({slug:o,success:function(t){console.log(t),delete n.state.hasData.plugin_data[s],0===Object.keys(n.state.hasData.plugin_data).length&&n.activatePlugins(e)},error:function(t){console.log(t),delete n.state.hasData.plugin_data[s],0===Object.keys(n.state.hasData.plugin_data).length&&n.activatePlugins(e)}}))}))}},{key:"activatePlugins",value:function(e){var t=this;e.classList.add("gpp-library-action-message--show"),e.textContent=(0,c.__)("Activating plugins","gp-premium"),d()({path:"/generatepress-site-library/v1/activate_plugins",method:"POST",data:{siteData:this.state.siteData,siteSlug:this.state.siteData.name.replace(/\s+/g,"_").toLowerCase(),importOptions:this.state.importOptions,importContent:this.state.importContent}}).then((function(n){e.textContent=n.response,n.success&&n.response||e.classList.add("gblocks-action-message--error"),setTimeout((function(){t.importContent(e)}),2e3)}))}},{key:"importContent",value:function(e){var t=this;e.classList.add("gpp-library-action-message--show"),e.textContent=(0,c.__)("Importing content","gp-premium"),d()({path:"/generatepress-site-library/v1/import_content",method:"POST",data:{siteData:this.state.siteData,siteSlug:this.state.siteData.name.replace(/\s+/g,"_").toLowerCase(),importOptions:this.state.importOptions,importContent:this.state.importContent}}).then((function(n){e.textContent=n.response,n.success&&n.response||e.classList.add("gblocks-action-message--error"),setTimeout((function(){t.importSiteOptions(e)}),2e3)}))}},{key:"importSiteOptions",value:function(e){var t=this;e.classList.add("gpp-library-action-message--show"),e.textContent=(0,c.__)("Importing site options","gp-premium"),d()({path:"/generatepress-site-library/v1/import_site_options",method:"POST",data:{siteData:this.state.siteData,siteSlug:this.state.siteData.name.replace(/\s+/g,"_").toLowerCase(),importOptions:this.state.importOptions,importContent:this.state.importContent}}).then((function(n){e.textContent=n.response,n.success&&n.response||e.classList.add("gblocks-action-message--error"),setTimeout((function(){t.state.hasWidgets?t.importWidgets(e):(e.textContent=(0,c.__)("Import Complete","gp-premium"),t.setState({isAPIWorking:!1,importComplete:!0,hasBackup:!0}))}),2e3)}))}},{key:"importWidgets",value:function(e){var t=this;e.classList.add("gpp-library-action-message--show"),e.textContent=(0,c.__)("Importing widgets","gp-premium"),d()({path:"/generatepress-site-library/v1/import_widgets",method:"POST",data:{siteData:this.state.siteData,siteSlug:this.state.siteData.name.replace(/\s+/g,"_").toLowerCase(),importOptions:this.state.importOptions,importContent:this.state.importContent}}).then((function(n){e.textContent=n.response,n.success&&n.response||e.classList.add("gblocks-action-message--error"),setTimeout((function(){e.textContent=(0,c.__)("Import Complete","gp-premium"),t.setState({isAPIWorking:!1,importComplete:!0,hasBackup:!0})}),2e3)}))}},{key:"restoreBackup",value:function(e){var t=this,n=e.target.nextElementSibling;n.classList.add("gpp-library-action-message--show"),n.textContent=(0,c.__)("Restoring theme options","gp-premium"),d()({path:"/generatepress-site-library/v1/restore_theme_options",method:"POST"}).then((function(e){n.textContent=e.response,e.success&&e.response||n.classList.add("gblocks-action-message--error"),setTimeout((function(){n.textContent=(0,c.__)("Restoring content","gp-premium"),d()({path:"/generatepress-site-library/v1/restore_content",method:"POST"}).then((function(e){n.textContent=e.response,e.success&&e.response||n.classList.add("gblocks-action-message--error"),t.setState({isAPIWorking:!1,hasBackup:!1})}))}),2e3)}))}},{key:"render",value:function(){var e=this;if(!this.state.isAPILoaded)return(0,l.createElement)(m.Placeholder,{className:"gpp-library-placeholder"},(0,l.createElement)(m.Spinner,null));var n=this.state.allSites;if(!n||"no results"===n)return(0,l.createElement)("div",{className:"generatepress-site-library-no-results"},(0,l.createElement)("p",null,(0,c.__)("No sites were found.","gp-premium")," ",(0,l.createElement)("a",{href:"https://docs.generatepress.com/article/site-library-unavailable/",target:"_blank",rel:"noreferrer noopener"},(0,c.__)("Why?","gp-premium"))),(0,l.createElement)(m.Button,{isPrimary:!0,onClick:function(){e.setState({refreshingSites:!0}),d()({path:"/generatepress-site-library/v1/get_sites",method:"POST",data:{forceRefresh:!0}}).then((function(t){e.setState({isAPILoaded:!0,allSites:t.response,refreshingSites:!1})}))}},this.state.refreshingSites&&(0,l.createElement)(m.Spinner,null),!this.state.refreshingSites&&(0,c.__)("Try again","gp-premium")));var r=[{label:(0,c.__)("None","gp-premium"),value:""}],i=[];n&&Object.keys(n).forEach((function(e){n[e].page_builder.forEach((function(e){if(!i.includes(e)){if("No Page Builder"===e)return;r.push({label:e,value:e}),i.push(e)}}))}));var s=[{label:(0,c.__)("All","gp-premium"),value:""}],a=[];n&&Object.keys(n).forEach((function(e){n[e].category.forEach((function(e){a.includes(e)||(s.push({label:e,value:e}),a.push(e))}))}));var o="";"tablet"===this.state.device&&(o="768px"),"mobile"===this.state.device&&(o="480px");var h=this.state.siteData.author_name&&this.state.siteData.author_url&&"GeneratePress"!==this.state.siteData.author_name;return(0,l.createElement)(l.Fragment,null,(0,l.createElement)("div",{className:"generatepress-site-library"},!!this.state.hasBackup&&(0,l.createElement)("div",{className:"generatepress-site-library-restore"},(0,l.createElement)("h2",null,(0,c.__)("Existing Site Import Detected","gp-premium")),(0,l.createElement)("p",null,(0,c.__)("It is highly recommended that you remove the last site you imported before importing a new one.","gp-premium")),(0,l.createElement)("p",null,(0,c.__)("This process restores your previous options, widgets and active plugins. It will also remove your imported content and CSS.","gp-premium")),(0,l.createElement)("div",{className:"gpp-library-action-button"},(0,l.createElement)(m.Button,{isPrimary:!0,onClick:function(t){window.confirm((0,c.__)("This process makes changes to your website. If it contains important data, we suggest backing it up before proceeding.","gp-premium"))&&(e.setState({isAPIWorking:!0}),e.restoreBackup(t))}},this.state.isAPIWorking&&(0,l.createElement)(m.Spinner,null),!this.state.isAPIWorking&&(0,c.__)("Remove imported site","gp-premium")),(0,l.createElement)("span",{className:"gpp-library-action-message"}),!this.state.isAPIWorking&&(0,l.createElement)(m.Button,{onClick:function(){e.setState({hasBackup:!1})}},(0,c.__)("No thanks","gp-premium")))),!this.state.siteOpened&&!this.state.hasBackup&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("div",{className:"generatepress-site-library-filter"},"No Page Builder"===this.state.pageBuilder&&(0,l.createElement)(m.SelectControl,{label:(0,c.__)("Category","gp-premium"),options:s,value:this.state.category,onChange:function(t){e.setState({category:t,pageBuilder:"No Page Builder"}),setTimeout((function(){(0,p.be)()}),100)}}),""===this.state.category&&(0,l.createElement)(m.SelectControl,{label:(0,c.__)("Page Builder","gp-premium"),options:r,value:this.state.pageBuilder,onChange:function(t){""===t&&(t="No Page Builder"),e.setState({pageBuilder:t,category:""}),setTimeout((function(){(0,p.be)()}),100)}})),(0,l.createElement)("ul",{className:"generatepress-site-library-list"},Object.keys(n).map((function(t){if(!n[t].page_builder.includes(e.state.pageBuilder))return null;if(""!==e.state.category&&!n[t].category.includes(e.state.category))return null;var r=n[t].directory+"/screenshot.png",i=n[t].name,s=(0,g.decodeEntities)(i),a=gppSiteLibrary.gppVersion.split("-")[0],o=n[t].min_version.split("-")[0],m=gppSiteLibrary.gpVersion.split("-")[0],h=gppSiteLibrary.generateblocksVersion.split("-")[0],d=n[t].min_theme_version?n[t].min_theme_version.split("-")[0]:m,f=n[t].min_generateblocks_version?n[t].min_generateblocks_version.split("-")[0]:h,b=n[t].image_width,v=n[t].image_height,y=u(o,a)>0||u(d,m)>0||h&&u(f,h)>0;return(0,l.createElement)("li",{className:"generatepress-site-library-list-item",key:i+":"+t},(0,l.createElement)("button",{disabled:y,onClick:function(){e.setState({siteOpened:!0,siteData:n[t],sitePlugins:JSON.parse(n[t].plugins)})}},(0,l.createElement)("div",{className:"generatepress-site-library-list-item-image"},(0,l.createElement)(p.ZP,{offset:100,once:!0},(0,l.createElement)("img",{src:r,alt:i,width:b,height:v}))),(0,l.createElement)("div",{className:"generatepress-site-library-list-item-title"},s,!!y&&u(o,a)>0&&(0,l.createElement)("span",{className:"generatepress-site-library-required-version"},(0,c.sprintf)(/* translators: Version number */
+(0,c.__)("Requires GP Premium %s.","gp-premium"),o)),!!y&&u(d,m)>0&&(0,l.createElement)("span",{className:"generatepress-site-library-required-version"},(0,c.sprintf)(/* translators: Version number */
+(0,c.__)("Requires GeneratePress %s.","gp-premium"),d)),!!y&&h&&u(f,h)>0&&(0,l.createElement)("span",{className:"generatepress-site-library-required-version"},(0,c.sprintf)(/* translators: Version number */
+(0,c.__)("Requires GenerateBlocks %s.","gp-premium"),f)))))}))),(0,l.createElement)("div",{className:"generatepress-site-library-refresh"},(0,l.createElement)(m.Button,{isPrimary:!0,onClick:function(){e.setState({refreshingSites:!0}),d()({path:"/generatepress-site-library/v1/get_sites",method:"POST",data:{forceRefresh:!0}}).then((function(t){e.setState({isAPILoaded:!0,allSites:t.response,refreshingSites:!1})}))}},this.state.refreshingSites&&(0,l.createElement)(m.Spinner,null),!this.state.refreshingSites&&(0,c.__)("Refresh sites","gp-premium")))),this.state.siteOpened&&(0,l.createElement)("div",{className:"generatepress-site-library-opened"},(0,l.createElement)("div",{className:"generatepress-site-library-iframe"},(0,l.createElement)("iframe",{title:"gpp-site-library-frame",src:this.state.siteData.preview_url,style:{width:o}})),(0,l.createElement)("div",{className:"generatepress-site-library-info"},(0,l.createElement)("div",{className:"generatepress-site-library-header"},(0,l.createElement)("div",{className:"generatepress-site-library-header__title"},(0,l.createElement)("h2",{className:h?"has-author":""},(0,g.decodeEntities)(this.state.siteData.name)),h&&(0,l.createElement)("span",{className:"site-library-author"},/* translators: Site library site built by "author name" */
+(0,c.__)("Built by","gp-premium")+" ",(0,l.createElement)("a",{href:this.state.siteData.author_url,target:"_blank",rel:"noreferrer noopener"},this.state.siteData.author_name))),(0,l.createElement)(m.Button,{onClick:function(){e.setState({isAPIWorking:!1,siteOpened:!1,siteData:{},siteSlug:"",sitePlugins:{},hasData:{},hasWidgets:!1,importOptions:!0,importContent:!0,confirmImport:!1,importComplete:!1,installablePlugins:[],activePlugins:[],manualPlugins:[]})}},(0,l.createElement)("svg",{width:"35",height:"35",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M13 11.9l3.3-3.4-1.1-1-3.2 3.3-3.2-3.3-1.1 1 3.3 3.4-3.5 3.6 1 1L12 13l3.5 3.5 1-1z"})))),(0,l.createElement)("div",{className:"generatepress-site-library-content"},!!this.state.siteData.description&&(0,l.createElement)("p",null,(0,g.decodeEntities)(this.state.siteData.description)),!this.state.importComplete&&(0,l.createElement)(l.Fragment,null,0===Object.keys(this.state.hasData).length&&(0,l.createElement)(l.Fragment,null,gppSiteLibrary.isDebugEnabled&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("h3",null,(0,c.__)("Debug Mode Enabled","gp-premium")),(0,l.createElement)("p",null,(0,c.__)("WordPress debug mode is currently enabled. With this, any errors from third-party plugins might affect the import process.","gp-premium")),(0,l.createElement)("p",null,(0,c.__)("To disable it, find WP_DEBUG in your wp-config.php file and set it to false like the below.","gp-premium")),(0,l.createElement)("code",null,"define( 'WP_DEBUG', false );"),(0,l.createElement)("p",null,(0,l.createElement)("a",{href:"https://docs.generatepress.com/article/debug-mode-enabled/",target:"_blank",rel:"noreferrer noopener"},(0,c.__)("Learn more here","gp-premium")))),Object.keys(this.state.sitePlugins).length>0&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("h3",null,(0,c.__)("Plugins","gp-premium")),(0,l.createElement)("p",null,(0,c.__)("This site uses the following plugins.","gp-premium")),(0,l.createElement)("ul",{className:"generatepress-site-library-plugins"},Object.entries(this.state.sitePlugins).map((function(e){var n=t(e,1)[0];return(0,l.createElement)("li",{key:n},n)})))),(0,l.createElement)("div",{className:"gpp-library-action-button"},(0,l.createElement)(m.Button,{isPrimary:!0,disabled:this.state.isAPIWorking,onClick:function(n){e.setState({isAPIWorking:!0});var r=n.target.nextElementSibling;r.textContent=(0,c.__)("Gathering information","gp-premium"),d()({path:"/generatepress-site-library/v1/get_site_data",method:"POST",data:{siteData:e.state.siteData}}).then((function(n){var i=[],s=[],a=[];Object.entries(n.response.plugin_data).forEach((function(e){var r=t(e,1)[0],o=n.response.plugin_data[r];o.repo&&!o.installed?i.push(o.name):o.installed||o.active?s.push(o.name):a.push(o.name)})),e.setState({isAPIWorking:!1,hasData:n.response,sitePlugins:n.response.plugins,hasWidgets:n.response.widgets,installablePlugins:i,activePlugins:s,manualPlugins:a}),r.classList.add("gpp-library-action-message--show"),r.textContent=n.response,n.success&&n.response?setTimeout((function(){r.classList.remove("gpp-library-action-message--show")}),3e3):r.classList.add("gpp-library-action-message--error")}))}},this.state.isAPIWorking&&(0,l.createElement)(m.Spinner,null),!this.state.isAPIWorking&&(0,c.__)("Get Started","gp-premium")),(0,l.createElement)("span",{className:"gpp-library-action-message"}))),Object.keys(this.state.hasData).length>0&&Object.keys(this.state.sitePlugins).length>0&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("h3",null,(0,c.__)("Plugins","gp-premium")),this.state.installablePlugins.length>0&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("p",null,(0,c.__)("These plugins can be installed automatically.","gp-premium")),(0,l.createElement)("ul",{className:"generatepress-site-library-plugins"},this.state.installablePlugins.map((function(e){return(0,l.createElement)("li",{key:e},e)})))),this.state.activePlugins.length>0&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("p",null,(0,c.__)("These plugins are already installed.","gp-premium")),(0,l.createElement)("ul",{className:"generatepress-site-library-plugins"},this.state.activePlugins.map((function(e){return(0,l.createElement)("li",{key:e},e)})))),this.state.manualPlugins.length>0&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("p",null,(0,c.__)("These plugins need to be installed manually.","gp-premium")),(0,l.createElement)("ul",{className:"generatepress-site-library-plugins"},this.state.manualPlugins.map((function(e){return(0,l.createElement)("li",{key:e},e)}))))),Object.keys(this.state.hasData).length>0&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("h3",null,(0,c.__)("Import","gp-premium")),this.state.hasData.options&&!this.state.isAPIWorking&&(0,l.createElement)(m.Tooltip,{text:(0,c.__)("This will import the options from the Customizer.","gp-premium")},(0,l.createElement)(m.ToggleControl,{checked:!!this.state.importOptions,label:(0,c.__)("Import Theme Options","gp-premium"),onChange:function(t){e.setState({importOptions:t})}})),this.state.hasData.content&&!this.state.isAPIWorking&&(0,l.createElement)(m.Tooltip,{text:(0,c.__)("This will install and activate needed plugins, import demo content, and import site options.","gp-premium")},(0,l.createElement)(m.ToggleControl,{checked:!!this.state.importContent,label:(0,c.__)("Import Demo Content","gp-premium"),onChange:function(t){e.setState({importContent:t})}})),(!!this.state.importOptions||!!this.state.importContent)&&(0,l.createElement)(l.Fragment,null,!this.state.isAPIWorking&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("h3",null,(0,c.__)("Confirm Import","gp-premium")),(0,l.createElement)("p",null,(0,c.__)("This process makes changes to your website. If it contains important data, we suggest backing it up before proceeding.","gp-premium")),(0,l.createElement)(m.ToggleControl,{checked:!!this.state.confirmImport,label:(0,c.__)("I understand","gp-premium"),onChange:function(t){e.setState({confirmImport:t})}})),!!this.state.confirmImport&&!this.state.importComplete&&(0,l.createElement)("div",{className:"gpp-library-action-button"},(0,l.createElement)(m.Button,{isPrimary:!0,disabled:this.state.isAPIWorking,onClick:function(t){e.setState({isAPIWorking:!0}),e.state.importOptions?e.importThemeOptions(t):e.state.importContent&&e.installPlugins(t)}},this.state.isAPIWorking&&(0,l.createElement)(m.Spinner,null),!this.state.isAPIWorking&&(0,c.__)("Begin Import","gp-premium")),(0,l.createElement)("span",{className:"gpp-library-action-message"}))))),!!this.state.importComplete&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("h3",null,(0,c.__)("Import Complete","gp-premium")),(0,l.createElement)("p",null,(0,c.__)("Check out your new site and start making it yours!","gp-premium")),(0,l.createElement)("p",null,(0,c.__)("Note: We do our best to ensure all imported images are licensed for open use. However, image licenses can change, so we strongly advise that you replace all imported images with your own.","gp-premium")),(0,l.createElement)("a",{className:"components-button is-primary",href:gppSiteLibrary.homeUrl},(0,c.__)("View Site","gp-premium")),this.state.siteData.uploads_url&&Object.values(this.state.sitePlugins).includes("elementor/elementor.php")&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("h3",null,(0,c.__)("Additional Cleanup","gp-premium")),(0,l.createElement)("p",null,(0,c.__)("This site is using Elementor which means you will want to replace the imported image URLs.","gp-premium")),(0,l.createElement)("p",null,(0,c.__)("Take note of the old and new URLs below, then head over to the Elementor Tools area to replace them.","gp-premium")),(0,l.createElement)(m.TextControl,{label:(0,c.__)("Old URL","gp-premium"),readOnly:!0,value:this.state.siteData.uploads_url}),(0,l.createElement)(m.TextControl,{label:(0,c.__)("New URL","gp-premium"),readOnly:!0,value:gppSiteLibrary.uploadsUrl}),(0,l.createElement)("a",{href:gppSiteLibrary.elementorReplaceUrls,className:"components-button is-primary",target:"_blank",rel:"noopener noreferrer"},(0,c.__)("Elementor Tools","gp-premium")))),(0,l.createElement)("div",{className:"generatepress-site-library-footer"},(0,l.createElement)(m.Tooltip,{text:(0,c.__)("Preview desktop","gp-premium")},(0,l.createElement)(m.Button,{isPrimary:"desktop"===this.state.device,onClick:function(){e.setState({device:"desktop"})}},(0,l.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",width:"1em",height:"1em",viewBox:"0 0 24 24"},(0,l.createElement)("path",{d:"M21 14H3V4h18m0-2H3c-1.11 0-2 .89-2 2v12a2 2 0 002 2h7l-2 3v1h8v-1l-2-3h7a2 2 0 002-2V4a2 2 0 00-2-2z",fill:"currentColor"})))),(0,l.createElement)(m.Tooltip,{text:(0,c.__)("Preview tablet","gp-premium")},(0,l.createElement)(m.Button,{isPrimary:"tablet"===this.state.device,onClick:function(){e.setState({device:"tablet"})}},(0,l.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",width:"1em",height:"1em",viewBox:"0 0 24 24"},(0,l.createElement)("path",{d:"M19 19H4V3h15m-7.5 20a1.5 1.5 0 01-1.5-1.5 1.5 1.5 0 011.5-1.5 1.5 1.5 0 011.5 1.5 1.5 1.5 0 01-1.5 1.5m7-23h-14A2.5 2.5 0 002 2.5v19A2.5 2.5 0 004.5 24h14a2.5 2.5 0 002.5-2.5v-19A2.5 2.5 0 0018.5 0z",fill:"currentColor"})))),(0,l.createElement)(m.Tooltip,{text:(0,c.__)("Preview mobile","gp-premium")},(0,l.createElement)(m.Button,{isPrimary:"mobile"===this.state.device,onClick:function(){e.setState({device:"mobile"})}},(0,l.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",width:"1em",height:"1em",viewBox:"0 0 24 24"},(0,l.createElement)("path",{d:"M17 19H7V5h10m0-4H7c-1.11 0-2 .89-2 2v18a2 2 0 002 2h10a2 2 0 002-2V3a2 2 0 00-2-2z",fill:"currentColor"}))))))))))}}])&&i(n.prototype,h),Object.defineProperty(n,"prototype",{writable:!1}),y}(l.Component);(0,l.render)((0,l.createElement)(f,null),document.getElementById("gpp-site-library"))}()}();
\ No newline at end of file
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard.css
new file mode 100644
index 00000000..f226f072
--- /dev/null
+++ b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard.css
@@ -0,0 +1,4 @@
+.generatepress-module-action{display:inline-block;font-size:12px;font-weight:400;line-height:1;margin-left:10px;text-decoration:none}.generatepress-dashboard__section-item-settings{align-items:center;display:flex}.generatepress-dashboard__section-item-settings button{font-size:11px;height:30px;justify-content:center!important}.generatepress-dashboard__section-item-settings button .components-spinner{margin-top:0}.generatepress-dashboard__section-item-settings button svg{height:20px;margin:0!important;width:20px}.generatepress-dashboard__section-item-settings button:not(:last-child){margin-right:5px}
+.generatepress-license-key-area .generatepress-dashboard__section-item-message{background:#fff}.generatepress-license-key-area .generatepress-dashboard__section-item{flex-wrap:wrap;justify-content:flex-start}.generatepress-license-key-area .generatepress-dashboard__section-license-key{display:flex;flex:1}.generatepress-license-key-area .generatepress-dashboard__section-license-key .components-base-control{flex:1}.generatepress-license-key-area .generatepress-dashboard__section-license-key button{height:31px;margin-left:8px}.generatepress-license-key-area .generatepress-dashboard__section-beta-tester{align-items:center;display:flex;flex-basis:100%;margin-top:30px}.generatepress-license-key-area .generatepress-dashboard__section-license-notice{flex-basis:100%;margin:0 0 20px}.generatepress-license-key-area .components-base-control__field,.generatepress-license-key-area .components-base-control__help{margin-bottom:0}
+.generatepress-dashboard__section-item-action input[type=file]{border:1px solid #ddd;padding:5px}.generatepress-dashboard__section-item-export-popover .components-popover__content{padding:20px}
+.generatepress-dashboard__section-item-modules{margin-top:20px}
diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/author-image-placeholder.png b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/author-image-placeholder.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8bdda75e9c137e170da559fa6526a8bfb11fbe0
GIT binary patch
literal 138
zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YjLblhj}pEoffRFqPl)UP|NoaCkv;+BGL{7S
z1xxL1QIr94Og&v3Ln>~)J!r@X(}tF
zUn9H$9t0G`=LZEF1q}uG#Ky$IK*zwrB*n+Y#V4g8AtIrmr>3T7XJr=`*L(55=fC>@
zr{Jj_go*G{3w|E%1qJ9O<_kE?7f+oa;%77AUH}j1e?2c=!o7lj^BUo47KHHMuOF8|
zpzLfg1OkkO7PUL)Gw9zU04czu
zs3AdcPnidOmv&NKScCtGp(6@|0XP9is{}y+pU?*Ya4HK|CO$Io3rSrV3PYY<4+ICI
zFeDo=^BFb(RIoZc4j3x>r4|3Ia))JNrtNY`3~KgI66CIigoFbDO#6qgI{dR*KB<0CuTBRhsYEjM*n9{
zjz5qb&pvxz0`Tc`l!V`mEb~8sl#)<+uTESQ4d&Tqm-u}AN-w|sn{)yXj|8j&OnZ(7
zH6Y?%hQrgXc#GKyDRJthEPB;zN>)UqHrvl6*-buyB>zo%6AFM>0_c}`PC;A|U>cC+
z=}Q>LK7QEKYh%r4tra9%=KE9CzI^PXHPK`gGUmnN}TkTP;r@
zJ`K;5{jti*v|KwbR}xNVr(5h@p_2cm0&WLj1Tg&1Se$H?FF8@jYrMyEmETG=1@Vq=
z@xNB0z%uxK6NgBeZdvvol*V1ZJkNE{3HnDP&wxHBb520e%Wxh+o;3wcCZ=J19j+0+
z#^6KS=7H@q=Y6~B$(9r!zkl|=SdIS|Y|r}xk_(^+BnS@VdMRq8XS%N~%I{6u-YHKD
z3U`a3z}$@&`$eJnl0G5d6UgbV?0MlAt3^OkJyX~7ClKafa5hxrS}FPB%xd5b=OUB$
zEz8+0ue%q|rL)5=p`9d;!GZRL(*GOL(=nbRJ+z4P-hE#QpC1%VvH@clW9=Qzp=-fFUj@TVMfqaAk6{M`sc?p>C
zAIH&ufePopI7NSxr0JHGTd3N*z0gg<`Nz4L6u
zNzp&{{Z9q(Ef`=evcQ`xO;SD%r>#oGwk|J&NH53fsmi!!QnW*Z3>_aqGO?^e+lueJ
zF2f6am#z=k7w-T?{PsXa0pbk_a0w6# Vi_-0+N(Q@nH)b-rakZ7V~_*_$Qi)R0L
z=J)nS$HK_W$O8Mt?o5_s`Q5qm&O_li8=&V+Bp7hbGpzIhMgKw>3Br)H`qSN_LrDs*
zeqcK*<-+q5QSHHWWuc^i-q|N2XP0?Tm%|=kF5i}E+lqrF{qtXdgL>${l>7@y0APSN
zf#M|D(ahVtTG8OQONqa<1NB-_ylqXCd<_$G86r
zfG-a~mFoY<8(>SI0{F|mFbuq@5ForcLU*GT(!@7RS}HUY(jauTnQBv5`aP4Gam#x$
zFJRsDG9AIaGl(`R8o^n47lP(}nrJ!v>K)B>cMWp0!3n
z)1D4n`#o9JS-ypz$rOieDl&a;cD7Tjj>g(-E0Rjj{hpb~10G15ATUrCpMw`*3OW(F
zz7tX#ohJ7Jz2?t?Paw8R1*ajmtfteWVVjMkOh4zDZ@F>RuLrqy_Qu)-yv}ykjwa59
z764`Z;s3buxw-&V79g~oFQrkvZ4C99cAL|gxAlFPYmX6eA6-7z<-=9+Vho%DrNPNSJhrYN>Co9U&<2f>gDA!)!5
z(m+H3If4uD1i*?oKsTbj?CnS5VL1^$5nNV%*6dO5k$Sp*FLi>ScD}SXGVWwI?Cf|;
zusiH*R9ZQ5FjL8>|I>%henity$hM+TW_s`8(-#n_3;-U$1AtEe9(cAB$3Q9c#Cm-$
zi{?P*t&s<>2W)LBYQ^uHA9oh?G5@yBdum~1s&=ezCW&Uj=eG9Ta<0<1MSsz*uryby
zxWZ-rMo8v-2?BbtUMyS!lzpIa02(Qv6A5}*CMa{G?NPrs{W)uDAo$ScJ}C-KXf-NT
zCg#F$&(2OsLm(+_yxnGMZp-a+-*n`X(CEU})%Nb@;qt-$M4Mow;GLZ8LyQ;dTHg5$rmEw|4+s?Lo%-Sj+VGkppX>*&CTo=DL
z3NR7?9{g5M;=}JVpD~}I>v6~9BWU}euj3_9S#kh^>whkrK;k_Y4j`<64kcvkQ7E{K
z%V}pW_-7;M=^BU4+1c1B^O^vb9udpT^aI~jrk|LAPZR6;O?6Kxlj4we+D%hq(~oU?
z&qvL|dOsn{m3<$f8PJ;qz;^&W{A#@M
zK&aQe#+@CXdj9(5__;MJ8T2_GZcT4HeJ-rn-P>9iTByvLSlOSNF03a$TgoleJQ55N
zev^mYf9~}onkyyIbvCNbaNh2aJY>q^Gdvy{shW=Li}*OavHb*6
z_31z>Shyz*9^|w*+#1Q%&}qK8v|ZVq*!FmgpB>@9+})kNWzO}?ev^pT|F3TX)==?R
zdl`?U#jut2btBQpetM`ms`4wN-Vkr?6X?Seh1obsq-wQ!8eJ3^5+r(FzPdhy(~uBxX#L;;pI{k%=Bhk*;sl
zZra72pZYoIbVsxZSGWe?HlVBT2QpME$2;VV;It~O;oQYyYkPAbDvin7PvBnWMu2-z
z`_?dLZ)>UY>lty;08bK7&Z>l@mNErAJvrB!lP1+|wm%r{-%
zIo@jS`EN}9FQkAn0U(78_P#oPyWM14{_{RF7LX
z#S>^32&^_GTkjUdLH1kX=2};MeO}wlM}q}jmkXoPI-3^nj0Ho@3ng}NPWb<{J>f6I
zUyei8uamN>QQyiH?AV;y4zioC53G}Q&+ofbDz)v|3^3V-*{1?=A+TX2pK@n7;pg;u
zYGkHs=Wr}xZ*ym^WTQT=+Q8jKU%>m0)5Y;huh4DRH_Ce)I1K#rKF)JO!xF(t(Y~s_
z=`MTKh*5%vinf{74fju=VL#;ShP7@wpEJ{Os;aY2Dg3GgoapWLB=Nea-xy
z>@I`VJ#JhY6~hJvk%NvMl?Dp}jYnh6=;IG;%4z^F;{cqG1IY&3>Mw#$XWLCQExI?b
zo-_gC3_;%`q3%bzd&vyP!3V>!OSx(i9bP6LlZ1|t(|axK_pqzBa^I?8FSn!ha~i$7
z+ndWeAgYg-f)z9M?;NM6xyih0yfoA2u=9~Tt&|~($+42=DG$>Br>Yzz)blRN$
za8`LL)$TN1=IK{(2(#`gG;!4#HyT-S*V*WKU%mYp{rKhFX>M#_x^OK0;paknYw+8{
z6sz5hz0JL`ZKtD*^cLOscSaIO{~F<(pm?AogFtwEsXKTa8jh9+J~L^pZMxYXoZa|k
z`6XQp+9y??8`S1(jKJo{cdHH2H?B|An+2mDf{r%Eh8BW-Jb5`T&W`3P-I$9zsx@=F
zrh@l9S!U|_`7V88o{s|0y(@4Oz(In4>1}t`+)(>DD3#-AtZ%F@*t_xA`w4Vi-Pyes
zv~Y`VXC>geKJ6&yn0nH1_UP2p-Zda(cYCzmnwk0Y(6fb+XE+4Es%s)d314C^H<#b@
zlZW%p{+-tInFctXW2Vw2^ylUT
z2rOk`s4%f1#+lnrgX5*s?tolW<-o!E=G4%A%l%C$@h8Qj30IrBV3YzkjbWb@wt{B*
zl|sX)n*;Jp?I)1*6G-Clxo~_|)c4kJYGQY`TR!LEI=ST+NcABhVaq+De?G-3Kledk
zAn}D+u9vnh_8L#t5_Mcwa^#&A75tDNWv4%M^Z7~be~Z+q?w2Xe)#z(}{dPX)L&vu>
zJ%p5nwl<*TW|E|R*z2g*05as%WpAl(F85Pwh3y~r^M@O=f9)0>&=iEj$5#oHvE1V;
z;SJj~-JJE1uw{N8sw5LSUg}8KV(C7*Y7?m^PT7@ohi%Q4r^4b;lP3r`9-X?{yVd6&
zn6IMb1V|(KKATNXj5I6xrOol)aB-eptwo)SJZFj8b1$bXToMHG{k(c(y*|8Bs<*T?
zH#qQB(C*Fk=TqLle|)oculhf;^nYicKlHRw)|$8Fy&oAmMe2W`y*)cmy|weLHyuH1
zwTgHfpDxh=RA)qtMwl!6lwn^4S_@e_QtxfE}I*r<>
z>hK99>vlL@xhzyL
z6Nb4{RdHKwZ|~0(YD+n_>Llunf){-4vTp9px~k?LNFGQkt2MLJ9QN1uttX}cvdh{r
z18RIcaFrGi1dodY;t?cTKTrR=R-MEoc&PVbYbpsn;LmT#u5bIF#Mg(hF703G8;Z(;>=6j=zne!;1oK2fG3p4{|Le~H|YGv@>xjun_
zJ4>AZ*JUMeD0zPV-BrHC`0t1R`}O}=1knFK+za=A-TQy6U;oGOXZMO=fL^?O1^4>p
zn>VjsynF+Uya2s~!@y*DMJ|HHDynScK;aLM{qBRx#~5RKM`+dWF&s)Zu~^{%Dsfe(
zuRq%V=e5KOp_f3%+vzojTH#fOgCa-i-+mPMu&|nYJ9_YS1&*n>Ibt7bQV0HfSvP%J
zdF8Ofo#2m+Hla`@h1pw_`BsV%?B7d^6!e;J#l?;qje#Qk$HSa4rDvk%HwnaHS2UtU
z8K*Q&?7>3YhI4HQEg{Nus#W@gMnlcH7Qb7i?Vu}y1Lrrpm_p`eDQ=eh;UCJz$&pSY
z)M$~vJM!yZepAx8g(f4>h>?%!48VfvY6Qn1EViG6X>7KNM1HrIbC9`eeU~ctO6Jn>
zEuNWzet7*mc+p>cs8Hfsb=bghigQyw3JWe(+r%C!WondgLFW3lVUo1Co=YsM=?B;^
zoa}wvmFfK`d)pr|ZBiU!ks_X=x4({1tfPdQ_9e-GaOytxOq;qkif^edh^^gA2=-)P
zJBFY*Bi;rjH!(CV43g8DDW3ga%@H-x#Yu`9Vma_~O|}%=onP)w;{7cdw#Q=QL2z5I
zTB|Z8lwk=<~@D=GH1G`^w;wBXHVb@8=f<4wtS;eraNCDovI2gk6h{agxJ
zdk`Vi_#M)PZn>8
z$5AWM^DlLa)NXOLm81BibisTWuZgx}Vi0S)mbFu-^bh0ks%CcA#%vK>GH34O#o9^R
zZF$nyHI7QlWR`|ENq+lLQ!XMzwDy4yGeW6H@oCUK^s=ap}{cuaK)YFI5h{Y(J-IyEG_3U&uYi!>Hl`POw
z>(uw5j?G}IjC=IuM0)IJjEO#hhy|Us!jmyA`bb~hw-eA_r?Iq3$q05KBRVkk&gw({
zNUka_(64dW_7!^Zmoyb|A7O;xCx|_PvKqbh>@K*5h`)LDH#YKip|Xi@&LFp#t8%^N
zm{Hc%QX;_~wkA=%lFvE35RQp!g{`u>ek`yJaxuiEvMwtL>W7u*xeT#SqK)GVOgTxp
zgSkUQcNb-1h%lSwg&bqnJPRIj&5#PPiTBd`SFKyAti>bdXwb1oSTkL9uAJ$~u4ksQ
zi}E;$Vtz7r=3)^D&!z^VPl;Cy>$NuxwItzs%JhYZQb}4a#K5rdS?OV)_Dq>fZO6^(
zuGPJm05&sTcXXSNTYNjdnt6sf>>xU{A9-drWUfBe>^)XuCSuQjO4klu2)7H0*w1+a
zg&h{gh6+2=FIiDzxA!-vXC;g#@N3gQC@U-=EhJ&YYzGC_I##kDPJG%eN9gy=pTAYIV?Ny3kh&~cp`
z=@fFdfO#=tD#|igAubx0xSHjbtCmyXC&d@93M3?^(EO$MQLUh|PJ>``CJTO_Y(>8Bi&vflG
zrKpR_BBJ|GuM^4|<)!7qV|nHNbOlZez97=eFj)|e{F`llXy|~sb~}y1CCUYoT`$zp
zGf=^kQrvx%Go)kRFer-1KB$lkD?g4Lki8I}fGwU7Xn3pI6jhVNG{lgp_3<8Pmt*`$
zERd3M5*6JrZ3xV;%c}tsfw^1XE}h;5cS!=5N#0}ZdU+g&5iw%kk2sJYip^dFkr`BI
z3zA<_b1Thqgqrw%(ayX&pzd>!{W;1RLlA`y9NW{Wawri2+&6QSxHT|});vRTnP
zRM4(ve)x5T2UZ7JWuDP}X+$%Lg0(1dbzXLZ4nX@!Rk
z;~>nM(jg?dZ~cltl3_4g*lJBg``2%b$6fX82s}|)<*89b(|qmTgp@6cvB=t*RPJ6m
z!Nrg7G^vZ?{Dv@lR%~#iHzVRa3U!D0$3|NxiZZ>yq{ZVUe{5>ftFf%ZlKWoS;+sNr
zX!hQh(%PoDD!dCr-J-7`XF7eGWaJ+TufxU&$z}a8YjJvWMMU)LT0tmG3nf9Q*|6#^
zm)scwqveb|-OMnd{MqHqHSa}{8fi|OH6?ib1j0Hm%+n1bEl=qZiv8uOT`?0vLScu`>RNeoY&B7*GOMdHjI2hwpaESG!?4WhYARm2yO
z7SKMCt~b}lrbp9TKgI3TW>MEncca(wG52f0<=zPz-;`&_hBy~3<`cu_21OhQkX7{K
zPR$LXyV;P@@;mPVa?7WQz_gq6ywYU86-NE%~|5hGny`s3$5VkxEM`j&C~j=PVH&=h_-2)b$IMi-Ns<
zsiGmjz$%g4g6S20r`Lja%&?fpcK-&+cmOTStmt^jq_lo-{G_9Zrx@k~Ke~3}u~xcR
z6{g;m)xJolL`Rz~Q78laj=Os}E3^L-C`PAuuEZwqfUlyLc(ggsQN65|zNX3Vh%;><
zOr6hFV;^eE8T$k>>9HUs;2$f1QDhgS2ZkJhUCNX%OD`a+O_-(V$Jwjo-MywK4ri?t
zTxD)Ecwz?IXV&Q7JeOof0C?-kC2A}i2%`n3u<_R=8aora7
zYE6Y`ng@+(dxN~vS^X3_Vj(cV)mNo?u0NI_$xVVyu&+B!!qbYFbaN#;J*{PFjsezg
zLa{ifiaE*^k{hp<^@y2qp=t(Oz2rj27I8oV9H
zbn-{T$qd_VhcekQNOQughJgHOY-(hzYwDbRnx%G=8O&OXn*mIs
zDK5q}Q@hkt5t3J_jifM3=Z1{+8g-aU!l|Btbb$fws`z&Bwn0Mo6G-k=hsEQ*NRr5q
z6MgGOrIX@>q7~eZYv<#SgitMT6o%>+-2+^9I@&{s6^tS=Yox1+g3kTTX~(8|z}XJNgZyy9bZ2
zwwSEqH(r%A@fJjeF0?w@8WGj0_vvIzX_yxr2Htr9ub1K;`%vnhK$wY?Sc6Pt)8eDL
zDeJl2z7&*e{MYF|hsfhGAC;r{mAqAsl8a0woIL{8eawm0%m%o1hoh;D;fBdNyLF5$dF5Zzba@
zrc!m?W4xN`7t#2^_wkWfD>~GP_y=jCsi)|-6~A=|fJF(`DiP4TY^xQTqDSRZ?Lx8@
zVT4y|`3aV~l$^Gk<<1LNk>h;(0#nMcT})9i8I(D4GvL6bGoMI?jf^pFlrbR%XYXs>
z)jcxB^?0;`^S(BR2W|!xuT(TBU{$IsF{}(hZmN4S^*R6I`Zl?Uhr!z1rHGhcQiu
zjb%k;X_ftuE4;1!gAIP%~n+*e*h3raD
zii&mL<%|mq6X6meJv1mDvIAs-z}>yE5_U{qkYY*GiP@kDB(9q-`A<``WT0#6)yvk%
zQL6J^msAvUc8t~zq#}~yP0jW#RX622$je?`?76MKhE5F9G*-MA;vi$|bPsO7qUG=6
zQ~V>@t(qnq<1Sts>K6aPk+L3lprf||lO{AeF>F*qjWMU`8s=?p*7N`3LQjU4Q&>@QbH*C1gvbCjI@
zBQ~Z7J+691{tB!2vb)1rE=gwgL4m1ui+U28sTGb@aS1Uzn(-OYl@uZ3hghfx^skwN
zx$av{yLv{ZIOnAYQdtQ%N_gGW6{-}86z$&m@u14OB&m0L$%!ADSJ3B})3?w@JQmQI
zpkJo?7S6LPb3m)72macZc=PJctBXY7!F5V2F*ch^3XZ7O{
zhMG>}DsU5ii~h!}NvT1;%qU;C4d4j~3ZR2c4k%ORl(=S0tJzSRskuqVEZ9%6Pr5-)
z6u)pdz0PVkl@vF3LNolZYI0jQ*4(Yv&mS$tpSS3v+)SO1%cd!!*MH;|AN-NlcSWNm
zrtjv|Ah~Ch_&sG7!9&Y01sj2{g;gHBBu+4jq$_T8If)K;3ilOXBjHZbPPRWH_D+yR
z=kV8}36ABgboV5i6VX_!^b0Y=A7{msnJ7HMNN|;71hLiLhrfBh{+?=1rjZ@>6;#}b
zUxDYb1dY6kwYt?X4D&~--nzkdCf7VPg+C5<+e;iXF517@f(e78vIS%GnS(Rh!&kvu
zv9<~?c+@?W-p;c*4zmRj^0^3M@_>d#uTmO$C|7_ZRFQc>>QF8(Y=)RWk`6)VV}u|u!4_v
zGhD;B@=DYGg#V(oSTH`3Zx>-PT<6J@<#+1|-L68_^ZAjyP|@qCafzCkIincVhavIM
zW&T4j#fy{N*vYP^2(ikjE7({xlz3K;<}geL#%Wkm$-c;R`fd_e%^CvRO|@fmRF_gb
zb;(n8G#7@>xQc!ISsT5``bKb@5dwDCJ1Y4~avZ50Dbo;2GCyFZus7-uW}z4WYd=G%pO!q=O!J!|^k
zzt#U@HNSdMD9$=DQx@DJFpx|V>xAqxh$3%JWK6U@9nQ@xxt84%(5tH!{>NXetTw}x
zLA6gGTilPsz@iR|XgD!Pv7Cl#N`90l#Zo=7J~2lp%rPOoB(p#D>**gFt`eKqH}`qg
zmQ6G>nu4*rwUPtbVrpiN8OFiRdZLE-E;^|tm2xHzPHlyO-k?p7yDx&p<%JFSg1cd(
zk7SPHI%26#$Z$KQVqH(5ksIOKt~}!Jd&58#aVZ!;^1)U2_Ell!2?$KHKew|u_D80QS`TEME+o*1(VN24RX#@Ka-6M
zm0P}FiEHV^+Xw##D#}&9t;;JA4T$ZM{nF*Ke1D85g6?4E3RjCvMxq@9JsiJd0M@Ze
zZmhjW&YP=^sM*aYoo!x{`twg?AJ7MA)BKeto~JGuWTNTorDZDWoq1)gei)YPbYnS_
z5E`+UF{LcAT;hY~PFwxF-&Q5g(F+;X;*MQV)3t_Md^cda)u;tAn=IIjQV1taSZ
zm+^4mQ=iVNd-<`#cc>+{cwm0q6d7k*ZBTdqSEpo0vn}#~?5|rzy!Wr0JBU^uu~A+A
zNFK0)brg7-q-6M9km+6IU4CydQ3A9(K*w!~t6Y;|meYhcJdT%_W|o83hn~n1v+E0brh
zQ&F*bB1YV?D+)EmU^LI1S%b%|7dvh%_n7zcTb)n|(@zM|88s6nyb6hlB{k|vrgJKy
znJh!PMe3!g;#ouLyj^;fYK$~9YBcG26CP+(7zTz6&&0J~@BSz~VcCMOlI}rn=BQLv
zBmwUj5vK5CKVn)vhs%g-R>DPz?_Hdc%MP(ql_HA8;{fAyWxe=o|JUP-3j!r~6^>^y
zHWJt=)iY!c!Cl?$Lbiwl8rvG!;}8e`@`^#juh$~#@Y?ZcFoKc^iiQXt>21+ByBQY5
z(LbV#)DeG*D6?OuQ+Jv&Gb;6;7$e9tfm_D-ZFyoVl*FAcIk1qw^${_{8VlY12`z&X
zRyBoZPbBC>(K|kldg{vd=?;-
z`Z|P%cXwL-1d;F!L%CFc=NEbndZBWv<8S02@jGi34J?0!M3cQy6Y|_mAvJ00I?$gR66S$tSd<*e`;oD=dCvMtl&5uUn3|!e
z_4u)&=9Ab8BKMLm>p_V{Gy2{tbUA5yeI*Xrhw9C_T|>mFn)DRjYTH%U-OI}d4jE%p
z0*9fiTd57HaR*sWIB2fu1a9E>N)oP(3j~oCA5@=C1XVIw*}QYyDw~J
zY)|f!$UZ$5{~1xiHBVkhw!zf|4_ZbsQafwZid_LjYil;OnPIjd75-PjS+nU2${#iy
zpra7?X^ePlm**-<0cVQf5ojNBiZ3+eGPTwb=C5ge=p90gj}Z&m$6n@AzG`*6^a#G@z6NSP8uH?ZH&0Z#q+EbO(fdz$=Y`^Bg=NBPO
z4Z883wrgf7@>dos%)3+<s-3D|!#91rP_@S@s~&ZXjtfT?5=MNmL7VqKhLzrvJj
zQ#r?tbo2`v;0X2SfKSA1j5Fm*(?w08o#zgJ2xrntV<2ZzWincdbq2kUY{Bz084L{z
zv+V}`;E)iTNbzwG*1qE7W7RZQLFkB}E!oi?X?~KyRP|Omnys0q7rO6u$^US-5)hjI
zFbp?75^y{(_HAXhDX{l@_~^AQnnf*kIp>UJt@{N_mL%leNJs;$5}(f=ol&Kf}UwV?XFzLaIi*iY+Q$lnQD5(A>8f3NAprpK$w()l09OW|C
z)=yKAclQx&vkLY~EBcT@`Yw22HwE>FQ84GE+CU#Nd}ncnr%LL3rQGXf^gF*GSwf<_
zD4|=dQQP#PET^yC-M`x`2})fosNo2R*W1V4#KV2%@Lv{ybSb{QkC5!-^v^
zMAF}*9nTDbH-rorpqIe&0uB!TfBj?93runr5#ZIJe+(3(>i0+cv6bU@Cm(+N?{|UZ
zPoUFIqYsT{4)j^eTbGB-uGV#1*E}o;ccS^HAwGUa>|q6|?pBwpu5$<+xsxtA;nbP%
z2B~=tJo1*Y2Y$a@(#tF7OgUH;Y3$^JXPBf%I>*eM$w|iacra=P(7xzkZE<-E%}I5M
zsJRBU>tNz+kTvX3;Gm@`rWTRnQ)efwiw~r?_HZV8MZb4Xx|S}<<+?M?kn(WkNawB}
zgImQ*DmM7x7gHp&(L+I46#RqMLY2PnntF+{WZ#}%4!D+stpw?pUUp2ywJ%!*i+j-B
zj)lj=E;DdUr5Sm8XHCk{=mTq0s<>L;Y3GI-<51Q7kq%9h)7*-h-8*1+2d)%Qtov-o
zbrjfFFG-3nMK`{2=HGvnl`0i@Wm@CF!@H~_!Vq#z#HD>PO
zaDPQjNAGCO$4dg>=``N0r&Z-l)>wy9|M6#^EEAe_>qe2%hhzFqm~FJhJarW_
zJ8g$*|3ki7|F%*eRfv;^b$X5bihb~kF8&23vS2X83p)osdi#=uCX6c1?(19aPgr^Z
z76rYeB&c;}Brudxi-Rzdzc4*~-B25`zd?)$AC2}pE+cMKhz7dsQ?Ymp&QKa7zVFx;
zlWG|&Hi_;hxf+iT-;(*vj*Eu)kO9M*Bm|yeO5Po
zb4Il!7ZkIWtrmcWN0fJJYw^e&LSgi90&>T^14NhBB1^=^8P6Glb?k2krac
zI5}2Yw?h-BH|*><8-0ZcdgO!&GxS6XP&*3Fmf#4JPoEHYt}io?h7T%d3e(6|Q8SF}
z8_2N{C^DZwXQ7@zZr$9Vc&)Rz>4!h&$;{P{;8LpntQ`%KpQ=_
zcVHz>N&5Rjgz0-K4#k%aCZZmvq7~D>WtUS_tI?SYY2O&@CYXO^z%>Z#`8ClJZh~ic
za>vGHgYQt)7;s^dsKT#o72IXf9xB;fY5d3WoH_pHS8S@Kp9yjh=4(ri!DFF-1i^0I
z&e6!e8?pX;V9}~Pe*Vp9hEq`+F`D_TiHbi1NfYxPru_lf5g``9-+PS(8^yWpQ54(b
zs`iuq_{MdSYPN0URz3&pDInz754N1{A_HrEfazf*6>(&m})CF4a4&GNk;!hT}E)vGE}
z8G_cnYG})qVId%e_xPCbfMu&p!Y;uPSh}2h8Q7$?ArnJu&ufa5c+5e6Ru!w$NWh`|
zhAMBi^RF>vPP++LpsRgdHiM@?wo2^W(bjieu3psIm0V#zlGn6$Ee_6a=F!+Tun1cL
z>?-B6f81>1BpLcqZ=SD`KU9XZ!?5ZaFF`JZ`5wAb$^0t;Hvp$qOwwVr;yk}QxcFTr
zPQ*DhVs*Kj$iTG`Z>~xAZMHZrrpDSKV|77K;#5_mV}7a+izPSZ3K$~L8^6g`C5~c&
zZyGyV=V%WDOUH(x|im>#~H7{%_
zp1PxQhlF?kPFD74AG1U34pT{cTbH|~5Q
z(!QG*P3~WA4{AgOjHVQtq^Pgj7fgzq5^iv=MRj4&UcVhm3s0;7k19FQiUPDqhDj-=
z1N@MOXvTt}%D?Gq%rR$9-MIm(w)U-3Dj#f_r2>R{dMD+Glap>@Hf|`~DB|MScVt*7
z=BJw7xe?;zPe$2j@)lFEZeyby%6^t9o6VPCP3FGI9=E!tE*f`yA2&$;2e_k%F$|n7oh-EFd|E@EFY*NOb{5yvBYic9j
zjaU#f6#E1_@$q+oU_VSwo*mp(J*v<}yz$X>uCgH9{=%PMT`KMnyLSQd+oGyrn1yoe
z?>?`|&-g3Rp_nEQPNLL6_52+nJJDg{dUo@H&j_p#1~GHtoKPoVaoiiil#kBQYVd%Ij_Q+(1~
z6=zxZcVJP$70Y7+4r8Z`=zV!Mp;sk-n{q6J)tx{Eg!gx;-MU0IomnHI9_(Imx2b$yEmxD2BQ)+jBSFK6iZ?U@
zK5}!cX!!PBSOM3MsgsybI=t8kU5ARx3NLF{E^ny|-&^Q?kVSUW!HwUSzfI%$D18Cn
zmRCx?axB%4MYyfN9;yEJn6@QNYz$p5j#XQMo?<5769;Qw>193sjF2OEpQ5UM-pojq
z@c6;Mi|~f0Nc0RkT#gOTO9vkLwK%CnZ9P{vxUFP={GQY3IFP1B%(R(sI9#recw>FJ
zbh3^*@vQe`ozTNNz)?ajH)j8fajd)=)9ba)us>MO{q#pkSym
zyN5b4()+gFsj5EbFto?ea
zNl}#EVZSot{RP54L&T*o^Z-J{##Tc0ZMC8N6ss{ehOm9Bw{Icd+!o6Ku7RZXS$sRB
zks(I3Shpup#H6C0{r*;CtY=0SOVf-L$yZ8p8qdI1Qu%ktZ}iw@QRA%T962;daK7m`
zQOQz@J{zn;xRW?ijNO(vV|k{BFz8ymtV31i4WSc#rj$y=^fCl()qunGyXR}x|UUKW|r!=F(SNk?koRKhIE3n`q1+M^A;T`6~U
zRSh)vW@^mse&evKFRzb>l;T55zU7a`nX=R2MOr)Cw3#AJi%!(jB1>8rF_=M`@6aP(
z$-rZM6=a}nu&9qItEuBWH@YG?i*k9}{fQzek=e)6+cO4xlG|cP=ylSJ;!^e)5&iIe
z`t`5W=5-x4C55&Ph++j_5EnZ!Ebu*tahd5i_r>2zd9
zu`rLSCi|mu7Jn~srVXI>J4Ng)+15Hv#f_-%*9gdt>C$pnned=(9Xr`=}LRR&O>jv#p5f`F5c0A+W?G>Gin5J9BS>
zM(WvX8XU7rffa40&slvwXb=4RsXU_@bs?@?B8L_KpL9xCkD
zyy;=Y2O}>7ZsaJWE%+#8FCH?jsLW7$7;wa81
zB_*uAMs<`RP#x5|asQBs30L?_IcZn3+S&mw@U%D5jcq+KLEB|>IvrCE92%-SAL+^id8jgM5V16G
zVq)kvp~`1irT*+3iUQ$v7PYT91^LmGiV6BI*;BDU-bBYgj2LlCSY#Em&Nu%~JOLkY
zQ;iq2u3s|5gbO6!&jYJ~cVSnc{U%gLzz12Q
zZyU-*hd=<1L7sEotAq|bfmna|y@GPo!=&YJMfd|BuMzEY6Zd|NE;{usYsoTlT1SZu
zcm7mBtrNxY>z(*y+$){3F=VRbo0n;<&47(FRWSVSasRbcQcH
z2D~3(#eOyW7E*C@ER5^QYI5%~P1sYuMjA-jXrY#RoPTh@V#`bC+};yStSJB0?iyEY
zCLry4gAoh<`ul)}3@^Hs6N9JD{VxcT9
zGPbm;DP-$3xuZE_obQE|GQ|}dkn%$+kY)yQZahSj_0U-afJ;3J#LxJnZRec)(TAE>
zoG#X%9bYFEMNy#6vH2jJ>Y-%BiS-Mh>L46b@UtbqO^ZK=4SdK5O{KpozQLBE;o6Qh
zX(1%ExKAM!xR3TFQtH`zqp73U`g%i--#G~$CbwQ<78qXG>uwkmWNw~a|Ejuvn<}K@
z&92$9b%M35qFxjPHWuEn9H=s&h5J6Dz%ROiXIeytvw=9npYb;f58BE24muhM8edm}
z4qi;N$#w|JF^yNcM(3)Yk>vn8%
znh6QBTUVRXW9f=R$jv_MP09E|VjNb~fQ*XzKsk=XVrtLS+Z@RQgw
zl3|v_%$ym8mRjbKBrZTB06=oLE0q9uapI
zD2KO!D%*;{)~>VmLwt2w*n*ub!=hFf%zeQEQ-^+{lZK&;g}o@`
zl+pGAn)1wAVsTk=J6we%V{qvnwaWD~1|6-U&oa!O=)7%x$RyxS7qlvVNQyXudLs=o
ze3#f}8fnf>y#_IHPg9}plQh?Z!V&)fi~Ut{adf#Iw%@s+@S|pj2(7F*zQ#<=@k6AW
z^c7I|M)19brm;p+wiJ)hjSSw4V#&tGZmcI_#XF=dN`^P)2f(oU?D#oXC1IyLo%v&G
zZ@}fYLVG8Vr4u4l*qq&jH6@dra#^qWl36RsZ}||CyNv$ao=l=d9OrlC(
zZi{uuihns8+XG~IQ1haX$dAxYOw&-tO5ZRzWFoCWm@jg-$t0@eOX-crv}BiJMsOjk
zG|8rB3&@`SODEHhQGYUQHx
z3zxw9>-z-dy%1JM9-^7-T>O26P&Y%C^a_pjzA18Sf%=un}NaEm1gjaJfMI=I0
zO}NkCggp;UKe55&iv+)cs?k`_X?fq!bXH_;NAP0|oDqipsXYsM{=pcH5+zF;yeQw4
z;EI3uYXWVOOHETub6<=l%JC(bo=mXTnkRw7ixgoG$oMh2o8+HRPbO4oK_Z?s#VM#_
zl(@N#O*!;B1grHI$)P5EHiYdjVSa%U#gpdFVLVRQg?x!M=wMGi;%Vf;>W)+&!u^Sr
zeu9}Tvx0vF#JiJYwH*EUrtX0
z6PBkl{-%j(`FlbVXNeQr$%jbE`IEC0pD0q3YQ)oB4&3=;Q+yKH;?(jgQ`r9iDH?7V
zf)_)e^&!dj4OjGdg6s;KBS6OG9b2*8c#52doy_
zd{FfKr7o?BVPu6IvDR~Zz~#u3CoTrF)g71gIFax(ZFm!f!V*=SxL+eVV{RQ8AkQ0k
z9OS_2-_lp1JpCu>Zk9&1WtaWH`QKO_lmD58np#ZE;WeG=AS*~(-I4Zb)MI#tOQn}j))@WxlVVuH=dc$#oupk_Q5
zb3q7v2S(OOa=*3@4m(muw3lGlA+oY
z@;9`Nv_>c0k7`9@QR+0``iM93V7m)v{{Tb5BolY=X$ir5{{WT9u;s|)ov~^E0HjmL
zBq`;wl=+dyR)~x-s+a0TJ&LXcq%A(<+7r-^rbzz)hs1gaRO;@&q)u#8<#|Rl!lI~@
zXMV*LNR1-cp!r6LbuUk}G@6x8#I3l4LP|)=StFl-)MYFpE6}Q3SARs&Qd;H(h?Oe(
zW&Z$>w##j3z0{bY6K9$v#5dmq+CE7;Z{-d5Fw>WkQ_HHJf@!3V
zQ`-GF+D6Dq+Zf!!+&V3sh2Vd2ZUpFU*%TU`lj&d3*Mtqhz36b1#c||>%PfgXUI?U|
zyY&vMCfqy<6?(VXgrhVy4N{<=M5w|+n#@-2At!?`u9rpqI*R`Qg^?1MK{#mAax2vh
zZ7Sm<XZS~<4_>lpYJCLdU{mkF!V(!DL{HX4%|BuwEMIy{B-|>=A1+!&
zG$xrJ8xzMv%dHCV>9aizDGBI7XqPF-r%yZ|0J=fpT$Mu!&$--uknYh!(dUCVftB3l
z4(BQV0N|T}CQ&VpMBEp}hPlA)v}2U{7I4JU%`zTzi18yPoKX~lopgE@MLt^h5HIoQ
zpEh=rFVlL&$#S$cCQ2p9ks&+$jbxQb@~#WF1B6#8dWgW)1eb(mi=!zMI5MV2hbcdh
z-7$oyWOB>UfhtfEWiCDQ6xNi6~Xc=lC*~$u29$grXz00QK$J5sq*WF*Cf(p
zsPhG;hSWI7nZsv&TN%ZlIr%r+uL~dx;ym8E+6eyHF`54M6!#rTS{a
zqPlWzu`Cmz1d)NtFdSKR#cacJPO+AT>?!Jk>J}6T$#@xhb|OZ4!87We!oaZ^wo7iXZ&4sz<5ck!LwGB(h;vNv|aJqGzYBO6!~ylZJSS`f4L%uX1eX
zuYxx6HI7VhJxfXGgCF+VDbkv7(5Kro9HW
z$`Tc$5O~m_-HK}iI+e0y_AM1l#gj5-Ra+Wv8g@F8Z)V7pOIjeCgT@Qg;G`NPxgo9p
z0ApEJbQfAiD%1Om$dtbVmE7A8r1b*9IKE2m37l0Kr+k4G4^mXCpWg)=I~MQcBd1
zH=}ze12mzTP$dfXAc9z>p|(AWG|
zEbTq;PY)ulza{OH>>kvMN=uLS2vL%hmc*65jR`FaFiC9WS>)Z8vB1;+05QofU|TV9
zp^bm`xjPa+{>Bh={z>=QO4G5WJ`6@#NFv1U3AFYxA=>*8s-d!%EP0iN#W86PA7rIQ
z9SJ-8uS~h+8x5YIWAyfn2Yi#%F7m6
zjOjme+Yrs6$Hk~GW)CF>>|xHIT!XRs-xnCO_A=$Pd6Ez(}4r~H_x_b_z^9Fdnc
zhZGYf%XnK(a!4;_l3HrVD5
zE=L;`u81yJW$bI264#ubOwti#t+`@RcCtn%bCPnsB#`3E6N~=R^izQD#AI0D>xJ~eoN=_A`BGd@IgYv$$@RrW(4u_GAB1Blfcr3hIEfY
zOBE%tiJR6+Fbh!X{i0_+&3W
zL&A~n250Heq{-a*LX{`S+@+R0z_6J&`4mL_Gh&pPopL7*@?Oy?Zhx_2Jq(nqCDzoO
zqsduEpqr&?iNu;rUMBvBubDVVG@SBY5*~@W`vix|{{Xy{V%fe_XM$4Smc~vz9SJ2X
zY)RvzEgZuV6skmtCQi+dmjj`j&(JgW6-^f0c{I8feu!Irlb0W1?i_z6zMG*xr#K!T
zVC^cI!8U~N{bF4c1huOfC)G*K6B2us&*^VMHOm}1Pd4M*(F*+Nll+Yi3u94y*_!Ij
z_CG>ONzVoe^Rc&Bp2EX;vSuaZS<;bk(XPf1V^d0dZ01=?{{WHeM_v&*Fq_`Qmu#!p
zo{Z#_G5uEpI6{`lmu=<*o0$0eYXYhEK@R)b=s@S^Lgn3+49)rqwUMqkCCskqbAtVN
zGOEhglb6rZHeHi};O-5Gi-Q^~DhowE+-PMUfA}#F5z1I4PQHJeLfYQ1)>M)>Sc4r%4`Ya`+UXqSIL^Jm`rx(%D4A
zeu5O(wO|`1nnrcV8ZpfWO?5f9V3LYmeZC))BqRW5Y&5C|<{u
zDXf`NQXMw`0A^%qGJJ&h_Y*E0jdG2R#F`8exMNTCVQ6w~mrWo^)sK}d9
z6=Xa-4MhI{)SjjXAwxpssYWn(uej2Rgwu1#q=m_Q3CL6B6mFI5qFprLo`2Kyc9Pr)
ztW1wjm!OuR!{le$g!2Zu9mJ}6Lrxn=#GH=l4lAN?{V#vx53cr*?
zi+-ioL{})eh|!LrKlrbfYHq(Eq${p$`=B*%oAiMkK{LK%JB3a7?!vbnBZoPoPLw^
zb6ma#$=9(Y@Ko<(CFDD2_7rF+62Yy=t**ok{#cSq-ItDJq)FJ)+T$h{nI0Tfn09=D
zIQxBwwB?vP+D_kuK&`^(qe@}llV9|*O9}3T5UiGor*=PfCaFKroiKTb=!PA+my8*Y
z7$R9Gq9D4$Vt>H?BQs(6ADT&(!P9J(j@|{Nb)h_^;7KV|Z#*2;$&I*Fctt9UJ#;7j
zXOD4oGiaN}q@!gd#A&3^qieyEEh_`CU(t{IVjJk=52m;$V(xzEPc{>eB6XV4(yf?a
zVAPi=czq;W{)gCY9?>#S2FCV(B|~pJGbX-An4FeR#1{m^oIipaV}aW01Zd%gCYsN<
zkrj5w%Rqy))nA{|OiB?;V_L+9mGS(sVRVBh-QaX<4iK%aP)fUb9Wyk!vJ$_z{{Wz9
zU5MeiyOH26&Gcg%I)CCYfK1bVqC!eN$MB?n2Abt#!<{s(g)jr~d#KdZ|rm
z{F%p#20BXT4H=Y6O5Jj6iNB&bXr+1>*5cwx7L+NN6Im&>`iP$%i7WRIP18OE<2p`7
zB-aAQHJ(PyicH()HbZp%B@bHWj4uoBHw$ouTk1(hHe+dU2XNlfkls{h0#K`aGYt@?
zlaFC(x#&(2zhOqHr%$&eINWW-jMl7
zw&<}msjNI4^khAQ+Ph-SpcO-i{h6Q3eNQY?xZ
zKE(}2$dt+-V3Du7e49qZVaKsAEJS%Q?8@eh6gv4KKK}qn*>JySBSn}i$iXse@N`*G
zGqjlwsV*-u9tW*4cpXbhXZjiwZ3Ls(9X6~LcJs#tM2R~1AnHXG=L3dQDh7#q1<7jPH-o&+h|P^zsN+TL;H$+64$Wtc1h6B|#>V9L+8cNGuFs6eK|iWYx73)Q`@*rYKS5a;J_+
zczRyLvV+F~Fdlk1wy$P)SBZWsFVYsmzXL56*Ki!dI+3y8K
zU}+^xQA~S}oT*x5f6kZFnk7kQUE|9_VYy5AL+lw@;XR7gkDz>Ej*uUyo8(rMF=W2O
zR{`a8FYqFVZIafd4Kte0x6)>N$%85J{0@2_|HJ?+5CH)I0s{a70RjdB0|5a5009vI
zAu&NwVR38TtO38S#II
zAJd+Hhu`w7{$%6$ZP)bd{+w$MpXuM{IDe-GqF0{Ap^ybzE
zn@i$<-J>*mNx)>6cM*jiJAs%QBL2J=lWpm
z`p=R704EuJ)XuELsM}TB*!*NK1S6p3aYWh?`;HJoi^+e>j1)p0F1*IWukxRK%e25d
z==w9I3N74lRTc`%5Pc^eGaU&0nR+Z9jVjth5+tRdz5SuJQwh0$~bB7cqqgbe95!EM=5W3
z1Qn-8zWm_bqc|q(kTgwb@q>U4$#`7rJE%9WA3vpX5G(!w`EVY!JH)viFlbKhBcB0y
zu?|>gfZn4rQb7#%9A<{gXWMzcdLVB(!9?JnIL!!k9?woD1Y*!O6BK3Ght5d|6OrJ)
zVLhb~z;+aaFo$x1^{;cO(x=+s=W3-)^vEpYHOKl@ouVFpAN??Pr(o0_I@1Us=KW@g
z8wbmX6QX^az+3{~fn;P<>S(Ea$7v9Rk&@-?Xu#XfAs3Gq0yOipgy$$++9!#PKcR}M
z2#n}>b8ZdnN33=OwO1OWv}vqXRPbB#hp+`LT^%RMj1+VP-^3r}z)m4V*pKt1{{ZQ~
zMXe!i{5i%!bQ?G7`J1$5Hj!AnaTB5*7-a-STURQkjc=wvZRYd@*_&8{S=i-w12oz6
z;}rz~{{VSlDTe(pk`Fv#0D}>o&&CZ7cSQKYl3G7+j7L?ivB2o_0So)5h4m)U5
ze9FaCSXCZAoO%)(dcQ6#V0x{m$jmD>0*QKV^i4*pjQk!X(l
z9pi)$%sUfqGzR?rKWtEoZoLg3lUQCvBc7ZIh&*`u
zFbATZR^mhr#dX3uOy7F|yT5>*?%oX%SCqeu
zssx72ErIY3_nS_X70!e=R#_~ouUy>TRQax5yBvC)xRolXo#udP<%$3(M0FfTd@$gc
z1E)qiz2kFW1$GhKdcxXjB_HVqjk+*z44psyc*!XlROs=->kk{f?U*H{v)*yKK&+kU
z`r|hN3=WSR4f#d&ya`uYYii;`R8Gc+5-3#waE<{Jf!7+vR0@UZxH_1f4-P#i019sg
z$pT-C#y1j8@?k1C@0+~4XcE(@?rX`dZ^jhODTPMYTzuovVL{&4Oelz66ACyfE!AL#%#&PoL=ir-u|HXQQj&%e5hE+27U?5oH33oZu&J
zf$({Au&&!Z!YIR47B%%UIs$U*@suVOA_`8u%Am9WDy%~C3;nQV@*fxc;rl2j5x)77
zWy4eFydsbY`i@qry++XbGE^Lyiu3cm{+TiXXw8SvikD_Fp*37q-Ldhm6AyB2%~BdI
zmFJ0(Sb1#XFLbO)E@Ihm>uBmS5G`jp~KWJ($w*W9uI
zw4Wu-2OH&Z!5av1P+5D?_`#?TK(l-u1>aLdEV2$&n$aM+`kOYB@adycX+AYg|BW
z%A<)U(h%L9Ox!9RHm)z5HQGUA1s^#wRWT0;7S6C$|QmdL?15}&%z_cLA+_wa<
zHX>E`c$CPzQecg)w2IufH#j{wL^Kw2A?8I|;dkBW_|7QQpV2=*^MeujS3vn)8Cyg_
z-^BXLev9I!J`O(y+sCv?)2bdYnhhn|iPzx4A&a-S08>H0fL*YZAHxAM#IuyQn~atx
zR)Owo4+0I>?>I*aqlB@EqW3Lf^VSeBR|-^u-@b
z`YU+~y#D~UX~%G?`LIh&Ag`7kTrOD$(`bF+1@VROI{3Pnbu?twlOdcS4gOA?5Uz?3
zzXl9rQ;&z^oFHoH?*9OcVQ|trNraU^EXoi>`d^HSx*UK8M6nI2%KhcaG}aNDsm@J+
z{{SP1r=w3Z1Ph?-`Ql>O?#v@$#7RQG`MX5Jd(7zwR)1I^$~*~>Jh
zH20eT8c&4B%5j9|9F9hdr-z0EKnYF&11LvWyMb}56xewaE=nrMIXL^vIT0G}kBlIw
zU{LL@a28ZJ`N{x+a)%=b5FAdNMBpu4{V+hg0jc+JA!H`8Jz&u&h6n;7ynHu@0clAa
ztGrluO?+>x6{~M9BAO#b%Eyg24b*^%0
z&9>G50P&roz&FieK%sjaD}WY(DEu%)M_PNQMs7fiNRhnwfE?fRl7___wXq&>p(bkb
z`g{2Q0PD~FuYZtR)^;0LLGtBdB@#nNz`~@WQPUwki2HG(V)ZvZakANvS}-@Ba0TaX
z^O`_4;P}PP$a6dl91EJE@Ivs2fX2gN{TqWr(c7PB;o#s~%Ir+DmW)qbU!wCX$Yh_Zn#;^6H$$YRk&wszt)u&DGn
zP>e~&xxx7XXbs#t=`q0tQV-vUq~yfc0Y%=q{{UFqQyu&aRNJ{?;vZaO<)E
z2L_%(UtFQld3b)D(}1O=X#Mj}HK`>t(wotDh1MbKj1Xvv34wq_Rscs9g>4552@rA8W`s0(
zAR~e{gh#3e$Jo(2l
z5woUcKm?;)CK$?>9XX*df8*yAMUojNxXO+Z#h-k2j)}u_hJcWfzWIT_lyAI_ScTCW
zoPW
z)v6uV>idd_Mh8tVIF5OA9IiqcyZL6JZ3l(JwTUX?9V91oFbcj4eEESwRYrGtnD*&J
z9v%CPdJ2!eVIw*RZlkYXOp7Ofv(bQ&BZGiB$|kEjw9S+PeRN=maTfEgu-_U@S0v(t
zmz@6qse$v}ZFK0@#z3X0djpF~io>=(V$$`=&QcUOHv?{lj?nn@#5s|7!0TD6j*rGr
zP>dPf?0isCIKRP_W@86^weOcpk`el
z;GqW%sQqhKcfHAw(795bkO<5#ZqJ=`&78
zuEaGDILm5KcIS{_4+^Ag7Yqb)?9NGy)X~;G$)(okc^O1+Hv8~LKY8H-3VWKX-#E$^
z26QmVfv4iWVZNo^Ju{unw4UK%wx^m0m}HUX+lF2NJ(uS=(~6e9N8DP+DeAEL;0jew
zGqa&zGZ%LuJvGBHLf}L~^Ok0Shb|+V1*ywBi>=CMC3Lm&>k&0T*=_ci6J_TQ-NaOd
zG+-B2emL`UV18%TZcWvFjv$<{;!`55t_XC}UCfy9N^9Gad<~c#3>Qz$bpC^=6#x}o
zK+Ulj@kcEA>lnkN%M7pwADspp8a7i@=HXM=5@@bMRVRE*7be8~;!$I8f%R5uU+&En
zsGdjX;}p;}AR6v|LpyIneCc?Z7H3F4U^1|(nh*NIKtrVABTra~-5bumWVE`YyMzEm
zuR$=4oS*gn+)3inbPOp8efxR9P&GA*N5dv+PNU$sgb`C?hzV;*?|9i!I2`4h%gv(&
ztc$nS&%B68h!kDSw2CRMp_W=E4l%86?f09TMv!GYn43jHyl|4hb@b~lw$Mob0Bj{2
zdpDdFl8}Sx^Ml*0!?qw1M|dHEy)PLiG;JpCLd=7QG)pd{j6{0Zf|CjrcJN}7R1_w%
zls0g@H~1MAXUz2(3sj9Em~4_^DxR4S^MD}axc}(M${&z
zt{^B4Q-O_Yd5&9go+qGmGrY2tZQzbS7=WZxU2B}^;Z!+fh6Ds2Uh#;5ZRt+(H|bTk
z5gQQGh-lp0y4DKnt!cLd9VzlICY(Fy-Ui!UI8gKyT9fCe5^xD8A2|fxpPq3GRVP<1
zg?to$80cz)v(3U<5w-U5iRDk7>o1<@YO^^Mb??qdf-aFFetdDA0}>z@;Do
z#pgFRBXm$axvae(knZBo>nt@%Vk4B`;hJfsYx9Mch1a;r2dLo?(2E`1Q7PT{
z{jq^owCJGYArry*_c$G5{KFPEwAFIKbQQl|XJF{C=Vy4@A1d;=ZlS8jydzw&Yg6YP
z!Xq`pOjH5MrktcesNNbOz`WvBw_ftNkCM=R^O`2zJBJ&_1rbJT&ai*+?}yK(561Cy
z8dm=RkLUQ|iEKRwE1<`ZS?CP`g%QQze^C0s4|wd|$lF?WP#$DC4bmTF#)yOq%U&?h
z;M4tO8WD5X))=u;^Lnu|1P+oM;^g2@1mh)qs}0wD2`-u^bt{~>;=V3F0^D7$T)WzQ
zZxUFmquYUZ`UPCDl|-K=ZXoYQ{yq#u@kNt!5ga_rfx!XJ1Cfj`kerhM;F}Bo065SA
zZN3<^bevu_-f~EHUHmwjfc>trQhK`mvZ!vEbBdDbSI4-(_!HwB$S8#P9Nbb2bYqq&
zIN8Jgu`vM^qo?B$M6jw7-y`NbWN9jGep*>h{0EF1nfWc|DYwzneUv2d?XD?%9
z<2UE_IB>xNI^FK@LX!II_;GFtxZOC?>t_D|-VZn(HK)b{rvu-;+%!(ddfTszV@mH{
z+)}Wzi=Sm*tADO_T^k4g0PE)gn^aLhpN`R}Kpd*!v?Ilzy1igiqKm|XG~7DB6RhPT
z2I(KXEO5el@aM{`UGXrk70`I+oYs}U2EyOB5QG}jI2=aszaB7>%Hq)6c_K_tW+`1u
z6qNPHT7#9oW08sOQI`Hoj9@7mU0@Or==NoXV6}l144XK^-Cl8cF7lyeekK?0U<>M(
z&n68b3QUmaXqXYKax;pvF`pJcdY!E48G*7?Iw_Ve#OBJT2(L
zQ_x4Yas2jt{{RBis{=VZ{{Wm(k3dA>9EjRIx!V1vHFq5zTvkJq*7S9j>O)(jofBFo
zr&vU_l?^ka8X}wnK&t+5DIXkP*AqV}1Lq-xr~AHdqZZdE
zHLG&64oExr%Q#enn&yLs>Seh|3Gv(am4JW*@%22wA~fgOlLtt;*9Q$CxasjSwj~68
zp0ZJCq!$7lm7$XAWL^*>hX!;wdu9tp*ca{Z);81Hetb8)Y9VNjzD5!CbqCCJOP~`s
zds@CL=Z-ZZE>1%Sc93~{aM7mlhi*s=stnWfn1_wdnA99
zf7Jf~JM;elfkMfNV}<+~V$`a&tIh&f_(ldX7kT!%vt6N0j#kapT>FlC4#;u2-RboO!b!%(eN`DKQv?zqH+S-`lRg^UIUmjHr7bHrSG72j?-7!yM3
ziIEhgBdiH(GHtw44;Swf(;25>Zt;I|1z`^iGp;MOdiXPvB62=`azR2`zO%2+1N-Jl
zQ$2AgSB!YqSs4QjcHSUsdvmdF>bV~mWgTRkKyPLV6Q0D^;$>Yn+NQDI?0Y{<=?TEq
za=|2EFE{5ACWqIg!OXi8gu@sehVUYz((`a>RpG?tgATZdx6UYtJ8^Iz?{7>3F%ma~
z`1#3IOumiENLR_m?(VFv4$+1zu98>7>>qSvuf;d|cpY3$3(nJ6$2(
z6@N=uXi+k_dHiD1Jj5B61GhIcG7UPfcL*s#4}rv{qixo``^Yq~Y}#S-0PS5@x$3%J
zEsn65$TD*%2eM?LLP6Pq5mdHuvmzC_7HjJVYFZm?6w0!7q~_t_b%WI73i3^j%s%fV
zM*tBOGl+1l;o2sTVio@8AV8$y2Pn-#(dPrYxF60(KllP*Dy#tQ#VfTqs`vSF&CLtM
zNil%vmtAwL5PEcRLqR0ynJ`46mhvUzB$TP(`N5p+r&bKU9yjyxf!lnE!!KVh?OYqa
z2jco-eMS$p7Qta2|c+<-)h3sB`}SWQnAgb~=3QK>u;J+EME{62N-M{Mx&}qIV8|rj)UIz^>$RTm54`Wy7>7`p{GQ<=JXauVyk?f5_6~K1@=z(f*eegw%M|vXCT_|q&!3E;mfwzCh=Vs>
z?&S0GcqTY^1%6Cs_#9uR^~db0DAV}h(H7K%vQU@sL)PwSiEsh9_6tCdh$O$
zkOVl>TwEH4mBdh>by|gYP;56C6w>Q4QYD92lF-aCLALc6n!6a7a%MOuN}8{k~;@
zp-zHn#G_hkUSo+4=>x+6P>IyuI+dypG&elOcf_X!-fUhL?#@%g@x~fHo)A7G!~E4S
z`u;zs{sP3D(#H?_W3;JgsF^4$TDfLfwN5@<1J`9vwYAHud~;Wb?@;FpTl!j!W(edn
zj!Tr>lIhq!Vk&@Z=XoNM3D3^*0ZL5J1FY9+LHHEGV@K%Zk;fSDZ*EkFB-(xq1_WL{
z@p=U0^AiB7epEiNTNTlUI@b5&mXo`+U-YoskW5}&HUyn({9vg!@X8ObQzC@!zl@V_XAWNL*W54O$uT#gx4>UdE+UdO9Vf)iRGWPMFqUi+Y=w%6
z@#_Hr-=i6=n(pcu&4*#YQV;0AoPY%qCcjJon)!d6Hrh_fEGAX0ocwRRGvQ6wSSp6i
z{kNkdBT@d3eZgRxF0bwKux+%9N=`t8Z!||)8?jk
zm1#o9PF)(W`f)UFjt&cht)gu8@iKu`J)MxBalyRxt%2xvVMG|_@b>=zZ~i&_hxPnF
zKln#5*JE%nmxU#Y(e%clp=%vuieE=R87ApUU!K1hge8#PsU2X!r5znUC>s5?2{R^$p&XnpqN?I3Iyi*#|3$PazQh$?*(
z3Srx~G*OM#a{V*3RmvjpdAy0+T;hF>TMk!FK^HpS5U|s{;n4)+=Lj?Hg2Rrmqu90>
zp%|AVx_}P<062qhotQz04PV;iMQUA`+C&VUxdh&;9$oXCt|tdD-tf(UBiiIH
zlOw5z5^a(#aNM+Jx=-20DhlL8RwR}u{
zTp-<^VFXQ!`N-%d_uTUhl-1GFcjn_*3hcVWU8X^Jyi1OR0@8l?z@Z2U
zb7T_eI8=7hH2S7#KP=FKf#(!hONz>UK}`s
zLKE!5)=~3#@ZFF7xFY})>BOK4mttigKL^s@X%~ICp$>uL8{QOrHUjl9mlP$5p(om8
zBNo)`H^8>4BQ=C_|6)p;>aO-f&lS`M}GFJW6GK}VN#{RKIoKo!E#|_T!rXV*%
zx6_W7`J7h?d~MNQ7~D?JYsMkX7P}_6%^`v#(L2IQ4OIKYL-~jH9^}5lA;*ubT=Aq1M=R99
z3WYelWUmGjGh<(zZ5R}Xe|UPz`hh#dY-})b$4YuM+yo3wPn=i-P>Po0o$$Es9}e-@
zHNFktYSVeVn1kJty=L|<28*k#cWc3x_gsKm9wsG(MgjVBk*Lii+u4xwCLSFwQHanJ1!~GRH4TI0DRb%
znjstmy;v5%K4N&z!(7KT1xOP%z6m<}VM9?0@9P%y+|}%u(z_l*oO_~hyFcDFT}6Ci
zfg0?4^94<=sm=?$>NIb!yeNu8^i1Z>`~EVZ$#QMYB|xzF+fy9|72!;sCBdLk*^y`f
z@6!vlf%##vNp9%lSE%gOFy#0c0-wd^Tn^~%z^5RzI6Rmpb4@2W1tK`rZ-?IVzU=&*
zz1^Iu17=ynZ}!UZk?gyDnB&LS3VHGT#`FIGGeLv%>R;`McVMq3uQ?_8P9Ka=PR5>0
z)_bPwH65`y7o!paz!Lp0I8H(sP6xc9;t{u;2qTg&cz|Ms4IZDI7#$RKmTWJQ9%hX<
zuflPP0ZCEX^@ujyCsP3hF5vxUtHXwYjyJKV<2ta3W!6Tm(T)RP_%LcVr9D%eoTiIn
zWO`g<5Q%DBL~K3G&|a!(>O)ZNF0t*di&s;aiA>Tkb_&%vd}bUN2ztJj94iui9it
z*G4-fI<6`hpFcS>FjrWVk(doTRaU8erH$JcqG>(^1
z#jPpiG=u(dDg;w~s${tc73E2exurU4IZ@gl}xCN&zm`8ZRjL426`t*7*?(Eug*xmZwkKjQ&%Mo50I
zj4PT9T@}lUDn%9^rcSNU-893jt|w#P#zT?n^8Dip?zAPFl;nof;{c|c9g)Lu?ct|+WHf4W
z9s4AdW(c9_~r
zLJ~T4fwj#U!t)uN3mTpAsfpKbBf_5L6WhDG`N3>ZB5-RM9dR>HZwacv=+(&=p#(0l
zRU!sK`|}6Zm2s7q`Zz4+^8R(@P}3G-a?u+yV1R4wfS=HAMYmB
z$N9NI1$c01o(2jsZr(Zd_{vzz43w#(eYeaOsnkR+-@ZK_H1i6XiP+JWa@GA;EF@@g
zsCR;1OplD4Kov;`d3b6@g~$DJ{Aq{VolQ6nG}QU}X6w%xv$rm~pBNAdpUxl!
z2>X6>Me{mw#sD@`P9taNsh+bF)pEV{7sc80t9D1G6-4(W}qFg9wKrVmK+^
zV&qf}SPpQ>j=1*)5X$ytA1)jwRM|#p$62gid=8(3f-5fbGVE9bLVX-5D^9~%p`xnk#ORy8gBy|ox9yb%Aj*TU4&Qf@Yho_k
zWo|Lx!X5JW=iCDl15ajAi(3ZfJdhIX_vajf?_Vacq7k5lrYb0NsfD8w(9-i<+;#=&
z=TkTXhl#J(3Bwq=)A4XA-ht%!$!CT>zHm^D06biQ3K{{+$uS5FPUF{{UQj)Ti37@0)mo#xcW3J}^kOpsp&IH&2krl8v00bfAd0
z5(3WSAsI3k!#$Jh~BT
zW}OrZ^0<=hI&%L2{Kv#L1M`Y;@QJ1K@tpN2j<;}*8XvXXzP;lJc%9`60N3XkChknQ
zYh2)bPn(k)!T|3;Wa|a=jg^Gx8>6mIEWLbAOlb-_XAg?>y^fJVp0X@aZEyBjN~o@
zc!@Tb%({@Ec=wJl0G&=R;KHtGi`_MvZjlGG6{H>hhad#9o7PmyNDf875iJyc@y#R<
zQZ)}|7GQ04>0SMQD|P%2{LrU>IerE|vnn+3uBJ*$hS!V-8bCNz>l7Zv7L`6R1UVt7
zID=ZLuO>Sw4rdFA4qHEy!$cz9qb%DXDdUt;a=*9KV
z_1Le=o3A`MxkZ}tE#PrW8JV`W=(*jxbfz5LB8?@o`VFdi^Jv^6+Uamk3g^yTJoz*@DD|dCplRR|@Bx=b+vF+1!dlx;eWIkI8Vf
zlv%mAxst4nzjzpHIeVD`L$YRd%)uOY_q3Q7fZ{{XCYwijcw7M;?c7by^@emI}3cz#s_{av77VDg&K8=asF^|_e9eIwi
z(%an1sOrqMG!D4S!-=o$pIzd;$YP>gkFS{`41k>Eg!I}NhoKtwra;v*Vui)DzC}I3
z_KgO$jC{PAe#{jNID&QSoTY$kfPLODbQ7Nq;52DfRWIX{qSXJ4Y>KuHk$4?L81#{toy6Xq4KC<}8118Q5>9~nbI%M!=*%XWuk@56$sKpIx6Rb_d
z56irA#);US_E0w(|jDZo)zk@iHu8rX`5H%z9g;58H{{Z;O
z2AsPdJjvAyD)W9ZQKaw&=i?z_Hj|FoEcyZU-ZMNL6F2a79AikNkE@e)5w$3|1Y<;J
zuJffQbg(-sNyO#u
zafnl6>TQ~E(`e|1^JH5FqYS0M>z*8LcVWFRxSQ2+Uho78@3}U<{xG7p5C^Ufs>>L*``OZimV17zn5|G#(hkiO2=Ji;^9NM|Fiuq;d{%JPc^(WzLr?
zQ+Z~U!gWNi8vDaEcWU9gJ=E54J5q|f$|7)U(8PjdXt;HXf=G9CG~29nH7E42;!FcR2lZooLGMK@!&?wcB1!W<^g2j=p`*Q?-|Pv1c>K@4VX|
z9tQ(a=NfmNIPT?`eP+ry5o&5;EZpqbQRC%{w7c{sbh{*U+*QPEpI@BW>hr!_Vq6z`
zOtAx7vy7!;=`Ky!pf=weFyW!Za92K?_mP9d?fhW7wZjZG#Sepfxv9l?4zUW*UR+1~
zWhXX8G27#i#cG944~#%SP`!svGF#uy_k`Tsz2@hr!O8L%L`@nV$Gj-bQ5(8MkT
z2vr&Q%4pPf{%{o$G@P?E0GCDAAHEte(kq5(sx59z*i47R0>^=Mi6}JqHND~qI1`!o
zjytnT_kbx^sT}mtXx@&07>$eZvkjU#FJ`}!kH7g1Pf{-ZC-}iFHww19=M$6IOY_0z
zJmJFEa6fzrNEP1MaJkL5^NeacH#iIg$j}Fay?2XQ8VF=;D3|ljT{IqE5b}KEfTR$@
z+)cpt;+xkK32mDbisk<8;=#eMw^hZjS}x(Wuyh|iGB#sKd5)pzuD;`Fh4V7Yy$EoN;DvPwAUs(BW5G$Out^(q!PH$PSDs6Lj5Pdiuq6Nkr*xc2>Td
zaX`kK2bq)V^WPZNMM1{3fB^*+8u)%30Fj9PB*YJAcLXeGIn8K?7?)#EE3eZ5x-q;6
zPD!;Pjr%SqOsby767M_@1BeoPc+E!c$3Ki^MD9mUA~t^oBdi_VQw>S1BGc~%&ffvT
zCkcZ!aQXHaAf?{$pCQfS0w>l4ebxEJ14L-eR|Z+AL
zb+p^u!zFtT@(vE%%k`F^n$(+@61oJk^M;)wOZH?MXo0!Bc2!jyvSX}YmtO`75I=jA
zG7Pt!;srFcIU~D_rV9FS+=Z{wJig|zP_^-ZwJ7P6IG0Ab*@;Toei_WM}7=Ynn}1~JV_L5mP`I}H4n!@g2?XQubFtX
zvsghI+bKf`nQTRSn$z_)|rEH02RC}|+$
z1k;C4KTIfL4q;|CqYnjt{^E2E@A6=@0<~_VnTs?d+mWPKUr3&w-2U-Qtau~|ooVpRk
zu_@QTC)O&b4mGR>8^=Xd;l>gUci*f%f6eX}Xdq&1$NJ#_t-hVjT?LchD2U3~G)cM