-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[pull] trunk from WordPress:trunk #1969
Conversation
Props ironprogrammer, afercia. Fixes #60337. git-svn-id: https://develop.svn.wordpress.org/trunk@57640 602fd350-edb4-49c9-b593-d223f7449a82
…lock types Adds logic that fixes the limitation for souces by allowing merging the `uses_context` defined by block bindings sources into supported block types. Each source defines the context it needs and it is added to the block types that are using the block bindings API. Fixes #60525. Props santosguillamot, gziolo, czapla, thekt12. git-svn-id: https://develop.svn.wordpress.org/trunk@57641 602fd350-edb4-49c9-b593-d223f7449a82
…riation. This ensures that the color contrast passes the WCAG AA contrast ratio for normal text. Follow-up to [56951]. Props poena, Anlino, richtabor, huzaifaalmesbah, shailu25, itpathsolutions. Fixes #60459. git-svn-id: https://develop.svn.wordpress.org/trunk@57642 602fd350-edb4-49c9-b593-d223f7449a82
…EST API search endpoints. See #59651 git-svn-id: https://develop.svn.wordpress.org/trunk@57643 602fd350-edb4-49c9-b593-d223f7449a82
See #59651 git-svn-id: https://develop.svn.wordpress.org/trunk@57644 602fd350-edb4-49c9-b593-d223f7449a82
…()`. Limit the post types searched in `redirect_guess_404_permalink()` to public, searchable post types. This prevents redirects to 404 pages and the exposure of private post type slugs. Props francescocarlucci, peterwilsoncc, rajinsharwar. Fixes #59795. git-svn-id: https://develop.svn.wordpress.org/trunk@57645 602fd350-edb4-49c9-b593-d223f7449a82
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the Unlinked AccountsThe following contributors have not linked their GitHub and WordPress.org accounts: @swissspidy602fd350-edb4-49c9-b593-d223f7449a82. Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases. Core Committers: Use this line as a base for the props when committing in SVN:
To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
…ve` attribute. The server directive processing, integrated in [57563], supports a simplified format for passing the namespace to `data-wp-interactive`. Props cbravobernal, gziolo. Fixes #60542. See #60356. git-svn-id: https://develop.svn.wordpress.org/trunk@57646 602fd350-edb4-49c9-b593-d223f7449a82
Follow-up to [57584]. Props manfcarlo. Fixes #60247. git-svn-id: https://develop.svn.wordpress.org/trunk@57647 602fd350-edb4-49c9-b593-d223f7449a82
…e `ceil()`. The return value of `ceil()` is still of type `float` as the value range of `float` is usually bigger than that of `int`. Props crstauf, audrasjb. Fixes #58683. git-svn-id: https://develop.svn.wordpress.org/trunk@57648 602fd350-edb4-49c9-b593-d223f7449a82
… `MATH`. Addresses an issue with server-side processing of directives when there is e.g. an SVG icon a navigation menu. Props cbravobernal, westonruter, dmsnell, swissspidy. Fixes #60517. git-svn-id: https://develop.svn.wordpress.org/trunk@57649 602fd350-edb4-49c9-b593-d223f7449a82
This ensures that not only the return values match the expected results, but also that their type is the same. Going forward, stricter type checking by using `assertSame()` should generally be preferred to `assertEquals()` where appropriate, to make the tests more reliable. Follow-up to [27055], [48937], [54402], [57244], [57648]. Props costdev. See #58683, #59655. git-svn-id: https://develop.svn.wordpress.org/trunk@57650 602fd350-edb4-49c9-b593-d223f7449a82
…_url`. This improves consistency as it matches the name of the function it is used in. Props peterwilsoncc, shailu25. Fixes #59545. git-svn-id: https://develop.svn.wordpress.org/trunk@57651 602fd350-edb4-49c9-b593-d223f7449a82
Props jacobcassidy, rahmohn, mukesh27. Fixes #59496. git-svn-id: https://develop.svn.wordpress.org/trunk@57652 602fd350-edb4-49c9-b593-d223f7449a82
…ages` property. This ensures that not only the return values match the expected results, but also that their type is the same. Going forward, stricter type checking by using `assertSame()` should generally be preferred to `assertEquals()` where appropriate, to make the tests more reliable. Follow-up to [48937], [54402], [54768], [57648]. Props costdev. See #58683, #59655. git-svn-id: https://develop.svn.wordpress.org/trunk@57653 602fd350-edb4-49c9-b593-d223f7449a82
Update JavaScript files for tag suggestions and the TinyMCE link plugin to use client side translations. This allows for `_n()` to be used for strings requiring singular and plural versions in which the correct form is only known client side. Props audrasjb, chaion07, costdev, hellofromtonya, johnbillion, marybaum, nicolefurlan, oglekler, rebasaurus, rsiddharth, sergeybiryukov, shaampk1, shahariaazam, swissspidy, tobifjellner. Fixes #48244. git-svn-id: https://develop.svn.wordpress.org/trunk@57654 602fd350-edb4-49c9-b593-d223f7449a82
This updates the following third-party GitHub Actions to their latest versions: * Updates `actions/setup-node` from 4.0.1 to 4.0.2 * Updates `actions/upload-artifact` from 4.3.0 to 4.3.1 Props desrosj, thelovekesh. See #59805. git-svn-id: https://develop.svn.wordpress.org/trunk@57655 602fd350-edb4-49c9-b593-d223f7449a82
… tests. This ensures that not only the return values match the expected results, but also that their type is the same. Going forward, stricter type checking by using `assertSame()` should generally be preferred to `assertEquals()` where appropriate, to make the tests more reliable. Follow-up to [56052]. See #59655. git-svn-id: https://develop.svn.wordpress.org/trunk@57656 602fd350-edb4-49c9-b593-d223f7449a82
This fixes two bugs in the font library. - Fonts using special characters were not being rendered properly in the frontend. - Allows the ability to use generic() in font family names. Props mmaattiiaass, nithins53, kafleg, vivekawsm, swissspidy, audrasjb. Fixes #60537. git-svn-id: https://develop.svn.wordpress.org/trunk@57657 602fd350-edb4-49c9-b593-d223f7449a82
Automatic deactivation of dependents with unmet dependencies requires a write operation to the database. This was performed during Core's bootstrap, which risked the database and cache becoming out-of-sync on sites with heavy traffic. No longer loading plugins that have unmet requirements has not had a final approach decided core-wide, and is still in discussion in #60491 to be handled in a future release. The `plugin_data` option, used to persistently store plugin data for detecting unmet dependencies during Core's bootstrap, is no longer needed. Follow-up to [57545], [57592], [57606], [57617]. Props dd32, azaozz, swissspidy, desrosj, afragen, pbiron, zunaid321, costdev. Fixes #60457. See #60491, #60510, #60518. git-svn-id: https://develop.svn.wordpress.org/trunk@57658 602fd350-edb4-49c9-b593-d223f7449a82
Fixes a regression introduced in [57623] where navigation embed items were missing `raw` property values. Props mamaduka, swissspidy, youknowriad, timothyblynjacobs. Fixes #43439. git-svn-id: https://develop.svn.wordpress.org/trunk@57659 602fd350-edb4-49c9-b593-d223f7449a82
This is a counterpart to the dynamic `hooked_block_{$block_type}` filter introduced in [57354], which makes it easier to modify all hooked blocks prior to insertion. Also adds the hooked block type as an additional argument to both filters for consistency. Props bernhard-reiter, swissspidy. Fixes #60574. git-svn-id: https://develop.svn.wordpress.org/trunk@57660 602fd350-edb4-49c9-b593-d223f7449a82
…y on `after_setup_theme`. Ensures that `wp_is_block_theme()` is not called too early before the themes are fully setup. This addresses an issue where a parent theme was mistakenly marked as being missing. Props scruffian, youknowriad, swissspidy, poena, dennysdionigi, bgardner, westonruter. Fixes #60411. git-svn-id: https://develop.svn.wordpress.org/trunk@57661 602fd350-edb4-49c9-b593-d223f7449a82
Merges the changes from Core and Gutenberg for the following tests: - WP_REST_Global_Styles_Controller_Test - Tests_Theme_wpThemeJsonResolver - Tests_Theme_wpThemeJsonSchema - Tests_Theme_wpThemeJson This will help ensure the stability of the theme.json style generation. Props ajlende, scruffian, aaronrobertshaw, get_dave, youknowriad. Fixes #60387. git-svn-id: https://develop.svn.wordpress.org/trunk@57662 602fd350-edb4-49c9-b593-d223f7449a82
It includes all the backports from this Gutenberg PR WordPress/gutenberg#59197 Props youknowriad, get_dave. See #60315. git-svn-id: https://develop.svn.wordpress.org/trunk@57663 602fd350-edb4-49c9-b593-d223f7449a82
These changes fix the selector used by block instance element styles for links so they do not get incorrectly applied to buttons. Props aaronrobertshaw, freewebmentor, mukesh27. Fixes #60557. git-svn-id: https://develop.svn.wordpress.org/trunk@57664 602fd350-edb4-49c9-b593-d223f7449a82
…asterisks. Props mahnewr, rudlinkon,kraftbj, audrasjb, mukesh27. Fixes #60513. git-svn-id: https://develop.svn.wordpress.org/trunk@57665 602fd350-edb4-49c9-b593-d223f7449a82
In test assertions for the `set_ignored_hooked_blocks_metadata` function, the actual value was erroneously passed as the first argument, and the expected value as the second. This changeset rectifies this by swapping the arguments. Follow-up [57627]. See #60506. git-svn-id: https://develop.svn.wordpress.org/trunk@57666 602fd350-edb4-49c9-b593-d223f7449a82
This bumps the version of Node.js used in GitHub Codespaces from 16 to 20. Follow up to [57212]. Props itschristiandale, huzaifaalmesbah. Fixes #60555. git-svn-id: https://develop.svn.wordpress.org/trunk@57667 602fd350-edb4-49c9-b593-d223f7449a82
…ote_get()` tests. The exact size in the response appears to differ between platforms, but this should make the tests pass for now. Follow-up to [57903]. See #60865. git-svn-id: https://develop.svn.wordpress.org/trunk@57904 602fd350-edb4-49c9-b593-d223f7449a82
Props audrasjb, huzaifaalmesbah, swissspidy. Fixes #60648. git-svn-id: https://develop.svn.wordpress.org/trunk@57905 602fd350-edb4-49c9-b593-d223f7449a82
…ibrary unit tests. Props shailu25, mukesh27, sabernhardt, audrasjb. Fixes #60870. git-svn-id: https://develop.svn.wordpress.org/trunk@57909 602fd350-edb4-49c9-b593-d223f7449a82
Props shailu25. Fixes #60814. See #60699. git-svn-id: https://develop.svn.wordpress.org/trunk@57910 602fd350-edb4-49c9-b593-d223f7449a82
…reen. Follow-up to [44264], [45278], [49219], [49479], [51356], [51459]. Props sjnbham, niravsherasiya7707. Fixes #60857. git-svn-id: https://develop.svn.wordpress.org/trunk@57911 602fd350-edb4-49c9-b593-d223f7449a82
This ensures that upgrading from 6.4 and 6.5 to the desired version is actually tested. See #60733. git-svn-id: https://develop.svn.wordpress.org/trunk@57915 602fd350-edb4-49c9-b593-d223f7449a82
Follow-up to [57537]. Props TobiasBg. See #60398. git-svn-id: https://develop.svn.wordpress.org/trunk@57916 602fd350-edb4-49c9-b593-d223f7449a82
…e-editor-gd.php`. Follow-up to [22094], [22817], [50810], [57524]. Props aristath, poena, afercia, SergeyBiryukov. See #60700. git-svn-id: https://develop.svn.wordpress.org/trunk@57917 602fd350-edb4-49c9-b593-d223f7449a82
Compose V2, which was first released in 2020, is included with all currently supported versions of Docker Desktop. Compose V1 stopped receiving updates in July 2023. The biggest difference is that the command to interact with Compose changed from `docker-compose` to `docker compose`. GitHub has now started removing V1 from Ubuntu & Windows images, which caused all Docker-based GitHub Actions workflows to fail. This change migrates to the new `docker compose` command to address these failures. Props swissspidy, thelovekesh. Fixes #60901. git-svn-id: https://develop.svn.wordpress.org/trunk@57918 602fd350-edb4-49c9-b593-d223f7449a82
The `$context` argument passed to filters such as `hooked_block_types`, `hooked_block`, and `hooked_block_{$hooked_block_type}` allows them to conditionally insert a hooked block. If the anchor block is contained in a template or template part, `$context` will be set to a `WP_Block_Template` object reflecting that template or part. The aforementioned filters are applied when hooked block insertion is run upon reading a template (or part) from the DB (and before sending the template/part content with hooked blocks inserted over the REST API to the client), but also upon writing to the DB, as that's when the `ignoredHookedBlocks` metadata attribute is set. Prior to this changeset, the `$context` passed to Block Hooks related filters in the latter case reflected the template/part that was already stored in the database (if any), which is a bug; instead, it needs to reflect the template/part that will result from the incoming `POST` network request that will trigger a database update. Those incoming changes are encapsulated in the `$changes` argument passed to the `reset_pre_insert_template` and `reset_pre_insert_template_part` filters, respectively, and thus to the `inject_ignored_hooked_blocks_metadata_attributes` function that is hooked to them. `$changes` is of type `stdClass` and only contains the fields that need to be updated. That means that in order to create a `WP_Block_Template` object, a two-step process is needed: - Emulate what the updated `wp_template` or `wp_template_part` post object in the database will look like by merging `$changes` on top of the existing `$post` object fetched from the DB, or from the theme's block template (part) file, if any. - Create a `WP_Block_Template` from the resulting object. To achieve the latter, a new helper method (`_build_block_template_object_from_post_object`) is extracted from the existing `_build_block_template_result_from_post` function. (The latter cannot be used directly as it includes a few database calls that will fail if no post object for the template has existed yet in the database.) While somewhat complicated to implement, the overall change allows for better separation of concerns and isolation of entities. This is visible e.g. in the fact that `inject_ignored_hooked_blocks_metadata_attributes` no longer requires a `$request` argument, which is reflected by unit tests no longer needing to create a `$request` object to pass to it, thus decoupling the function from the templates endpoint controller. Unit tests for `inject_ignored_hooked_blocks_metadata_attributes` have been moved to a new, separate file. Test coverage has been added such that now, all three relevant scenarios are covered: - The template doesn't exist in the DB, nor is there a block theme template file for it. - The template doesn't exist in the DB, but there is a block theme template file for it. - The template already exists in the DB. Those scenarios also correspond to the logical branching inside `WP_REST_Templates_Controller::prepare_item_for_database`, which is where `inject_ignored_hooked_blocks_metadata_attributes` gets its data from. Props tomjcafferkey, bernhard-reiter, gziolo, swissspidy. Fixes #60754. git-svn-id: https://develop.svn.wordpress.org/trunk@57919 602fd350-edb4-49c9-b593-d223f7449a82
… which allows WordPress core to make a decision. An excessive amount of autoloaded options is a common cause for slow database responses, sometimes caused by very large individual autoloaded options. As it is not mandatory to provide an autoload value when adding an option to the database, it tends to be ignored, which in combination with a default value of "yes" and lack of documentation can lead to the aforementioned problem. This changeset enhances the option autoloading behavior in several ways: * Update the function documentation to encourage the use of boolean `true` or `false` to explicitly provide an autoload value for an option. * Use new string values `on` and `off` for explicitly provided values stored in the database, to distinguish them from `yes` and `no`, since `yes` does not allow determining whether it was set intentionally by the developer or only as a default. * Effectively deprecate the values `yes` and `no`. They are still supported for backward compatibility, but now discouraged. * Use `null` as new default autoload value for `add_option()`. If the developer does not provide an explicit value, this will now trigger WordPress logic to determine an autoload value to use: * If WordPress determines that the option should not be autoloaded, it is stored in the database as `auto-off`. As part of this changeset, the single heuristic introduced for that is to check whether the option size is larger than a threshold of 150k bytes. This threshold is filterable via a new `wp_max_autoloaded_option_size` filter. * If WordPress determines that the option should be autoloaded, it is stored in the database as `auto-on`. No logic to make such a decision is introduced as part of this changeset, but a new filter `wp_default_autoload_value` can be used to define such heuristics, e.g. by optimization plugins. * If WordPress cannot determine whether or not to autoload the option, it is stored in the database as `auto`. * This effectively means that any option without an explicit autoload value provided by the developer will be stored with an autoload value of `auto`, unless the option's size exceeds the aforementioned threshold. Options with a value of `auto` are still autoloaded as of today, most importantly for backward compatibility. A new function `wp_autoload_values_to_autoload()` returns the list of autolaod values that dictate for an option to be autoloaded, and a new filter `wp_autoload_values_to_autoload` can be used to alter that list. These behavioral changes encourage developers to be more mindful of autoloading, while providing WordPress core and optimization plugins with additional control over heuristics for autoloading options where no explicit autoload value was provided. At the same time, the changes are fully backward compatible from a functionality perspective, with the only exception being that very large options will now no longer be autoloaded if the developer did not explicitly request for them to be autoloaded. Neither WordPress core nor plugins are able to override an explicitly provided value, which is intentional to continue giving developers full control over their own options. Props pbearne, flixos90, joemcgill, azaozz, spacedmonkey, swissspidy, mukesh27, markjaquith. Fixes #42441. git-svn-id: https://develop.svn.wordpress.org/trunk@57920 602fd350-edb4-49c9-b593-d223f7449a82
Follow-up to [23729], [28128]. Props dilipbheda, mukesh27. Fixes #60917. git-svn-id: https://develop.svn.wordpress.org/trunk@57921 602fd350-edb4-49c9-b593-d223f7449a82
…plugins`. Previously, when `WP_PLUGIN_DIR` was set to something other than `wp-content/plugins`, e.g. `wp-content/mods`, `load_script_textdomain` was searching for script translations in `wp-content/languages/mods`. However, that is incorrect, as `WP_PLUGIN_DIR` does not affect where translations are stored. The location is always `wp-content/languages/plugins`. Props coreymckrill, swissspidy. Fixes #60891. git-svn-id: https://develop.svn.wordpress.org/trunk@57922 602fd350-edb4-49c9-b593-d223f7449a82
Support pretty permalinks when FrankenPHP server is detected, which is built on top of Caddy. Caddy detection was added in [57612]. Props swissspidy, stephenmiracle. Fixes #60884. git-svn-id: https://develop.svn.wordpress.org/trunk@57923 602fd350-edb4-49c9-b593-d223f7449a82
…tests. Follow-up to #60865 / [57903] where similar instances were recently updated due to an upstream change. Particularly the `test_wp_crop_image_with_url()` test recently began to fail on some environments, likely because of the same change. This updates the image URLs with the aim to bring more consistency and to get the test passing again more broadly. Fixes #60907. git-svn-id: https://develop.svn.wordpress.org/trunk@57924 602fd350-edb4-49c9-b593-d223f7449a82
…ain()` et al. Some plugins pass invalid values such as `null` instead of a string, which has never been supported by WordPress (no translations are loaded) and was technically undefined behavior. With the introduction of the new l10n library in #59656, which has stricter type hints, this could end up causing warnings or even fatal errors. This change adds a deliberate short-circuit to `load_textdomain()` & co. to better handle such a case and document that it is not supported. Props verygoode, swissspidy. Fixes #60888. git-svn-id: https://develop.svn.wordpress.org/trunk@57925 602fd350-edb4-49c9-b593-d223f7449a82
…`utf8mb4`. Since WordPress 6.5, the minimum supported version of MySQL and MariaDB is 5.5.5. This means all supported database servers now support the `utf8mb4` character set and therefore the conditional logic for this is no longer necessary. Props l1nuxjedi, craigfrancis, OllieJones, johnbillion Fixes #60096 git-svn-id: https://develop.svn.wordpress.org/trunk@57926 602fd350-edb4-49c9-b593-d223f7449a82
…paths`. This adds an `is_dir()` check in `_get_block_templates_paths` before trying to run a `RecursiveDirectoryIterator` to avoid errors being reported in New Relic even thought the errors should be handled by a try/catch block. Follow-up to [57215]. Props iCaleb, sean212, mukesh27, joemcgill. Fixes #60915. git-svn-id: https://develop.svn.wordpress.org/trunk@57928 602fd350-edb4-49c9-b593-d223f7449a82
Due to some changes on the WP.com side to compress the requested images on the fly, the exact image size in the response could be different between platforms. This commit aims to make the affected tests more reliable. Follow-up to [139/tests], [31258], [34568], [47142], [57903], [57904], [57924]. Props peterwilsoncc, jorbin. See #60865. git-svn-id: https://develop.svn.wordpress.org/trunk@57931 602fd350-edb4-49c9-b593-d223f7449a82
There was a small typo which was in a string context only visible to translators for the testimonial pattern. This fixes that. Props shailu25, SergeyBiryukov. Fixes #60924. git-svn-id: https://develop.svn.wordpress.org/trunk@57932 602fd350-edb4-49c9-b593-d223f7449a82
The value of `start` is not fully supported by Opera Mini which has 1.01% usage. There is no material change in functionality with this change. Follow-up to [55919]. Props davidbaumwald, sabernhardt, khokansardar, devsahadat. Fixes #60876. git-svn-id: https://develop.svn.wordpress.org/trunk@57933 602fd350-edb4-49c9-b593-d223f7449a82
…e-editor-imagick.php`. Follow-up to [22094]. Props aristath, poena, afercia, SergeyBiryukov. See #60700. git-svn-id: https://develop.svn.wordpress.org/trunk@57934 602fd350-edb4-49c9-b593-d223f7449a82
… Early). Reference: [https://datatracker.ietf.org/doc/rfc8470/ RFC 8470: Using Early Data in HTTP]. Follow-up to [5446], [6104], [10740], [27422], [36274], [36294], [42207]. Props kkmuffme, mukesh27, joemcgill. Fixes #60942. git-svn-id: https://develop.svn.wordpress.org/trunk@57936 602fd350-edb4-49c9-b593-d223f7449a82
…der_desc()`. Follow-up to [57936]. See #60942. git-svn-id: https://develop.svn.wordpress.org/trunk@57937 602fd350-edb4-49c9-b593-d223f7449a82
Include the asset version of JavaScript and CSS files when generating the ETag for concatenated assets in `load-scripts.php` and `load-styles.php`. This ensures the ETag is updated as script versions change (for example editor package updates) rather than only when the WordPress version changes. The `W\` prefix is added to the generated ETag to allow for CDNs and proxy servers modifying the script to add or improve the compression algorithm. Props azaozz, dav4, ironprogrammer, johnbillion, kkmuffme, monzuralam, peterwilsoncc, sergeybiryukov. Fixes #58433. git-svn-id: https://develop.svn.wordpress.org/trunk@57943 602fd350-edb4-49c9-b593-d223f7449a82
… Editor. Currently, in blocks themes it's possible to use the ${type}_template_hierarchy filter to alter the template hierarchy. However, those filters are not taken into consideration by the Choose a pattern popup screen that appears when creating a new template in the Site Editor, causing a mismatch between the editor and the frontend. Props aljullu, mukesh27, ntsekouras, jorgefilipecosta, gziolo. Fixes #60846. git-svn-id: https://develop.svn.wordpress.org/trunk@57944 602fd350-edb4-49c9-b593-d223f7449a82
…ormance. Creating the Home Business pattern was needed to show it on the template replacement flows, but there's no need to use it in the template, and the minor code repetition is better than having to do a an extra pattern replacement. Follow-up to [WordPress/twentytwentyfour#486 PR #486]. Props onemaggie, youknowriad, poena, afercia. Fixes #60620. git-svn-id: https://develop.svn.wordpress.org/trunk@57945 602fd350-edb4-49c9-b593-d223f7449a82
….php. Props swissspidy. git-svn-id: https://develop.svn.wordpress.org/trunk@57946 602fd350-edb4-49c9-b593-d223f7449a82
…lues don’t exist. Skip outputting layout rules that reference content and wide sizes CSS variables, if no layout sizes exist in the current `theme.json`. Props andrewserong. Fixes #60936. git-svn-id: https://develop.svn.wordpress.org/trunk@57948 602fd350-edb4-49c9-b593-d223f7449a82
See Commits and Changes for more details.
Created by pull[bot]
Can you help keep this open source service alive? 💖 Please sponsor : )